<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TTMath: ttmathbig.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ttmath_logo_for_doxygen_doc.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">TTMath
   &#160;<span id="projectnumber">0.9.4_prerelease_2019-07-31</span>
   </div>
   <div id="projectbrief">&nbsp;C++ bignum library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_c795c2b5194dedc91b1c73ff993ae7e2.html">ttmath</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">ttmathbig.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="ttmathbig_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * This file is a part of TTMath Bignum Library</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * and is distributed under the 3-Clause BSD Licence.</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Author: Tomasz Sowa &lt;t.sowa@ttmath.org&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">/* </span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * Copyright (c) 2006-2019, Tomasz Sowa</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * All rights reserved.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * </span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * </span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *  * Redistributions of source code must retain the above copyright notice,</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *    this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *    </span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *  * Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *    notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *    documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *    </span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *  * Neither the name Tomasz Sowa nor the names of contributors to this</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *    project may be used to endorse or promote products derived</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *    from this software without specific prior written permission.</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> * THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#ifndef headerfilettmathbig</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#define headerfilettmathbig</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">/*!</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">    \file ttmathbig.h</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">    \brief A Class for representing floating point numbers</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ttmathint_8h.html">ttmathint.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ttmaththreads_8h.html">ttmaththreads.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#ifdef TTMATH_MULTITHREADS</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacettmath.html">ttmath</a></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">/*!</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">    \brief Big implements the floating point numbers</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span> exp, u<span class="keywordtype">int</span> man&gt;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html">   63</a></span>&#160;<span class="keyword">class </span><a class="code" href="classttmath_1_1_big.html">Big</a></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">    value = mantissa * 2^exponent   </span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">    -  exponent - an integer value with a sign</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">    -  mantissa - an integer value without a sing</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">    mantissa must be pushed into the left side that is the highest bit from </span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="comment">    mantissa must be one (of course if there&#39;s another value than zero) -- this job</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">    (pushing bits into the left side) is doing by Standardizing() method</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment">    for example:</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">    if we want to store value one (1) into our Big object we must:</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="comment">    -   set mantissa to 1</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment">    -   set exponent to 0</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="comment">    -   set info to 0</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">    -   and call method Standardizing()</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a>  exponent;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man&gt;</a> mantissa;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> info;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">/*!</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">    Sign</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="comment">    the mask of a bit from &#39;info&#39; which means that there is a sign</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="comment">    (when the bit is set)</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">   97</a></span>&#160;<span class="preprocessor">#define TTMATH_BIG_SIGN 128</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="comment">/*!</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="comment">    Not a number</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment">    if this bit is set that there is not a valid number</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="ttmathbig_8h.html#a6219093f504910a0e8415844157c70fc">  104</a></span>&#160;<span class="preprocessor">#define TTMATH_BIG_NAN  64</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment">/*!</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment">    Zero</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="comment">    if this bit is set that there is value zero</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment">    mantissa should be zero and exponent should be zero too</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment">    (the Standardizing() method does this)</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">  113</a></span>&#160;<span class="preprocessor">#define TTMATH_BIG_ZERO  32</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="comment">        this method sets NaN if there was a carry (and returns 1 in such a case)</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">        c can be 0, 1 or other value different from zero</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">  121</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c)</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    {</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">if</span>( c != 0 )</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    }</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment">        returning the string represents the currect type of the library</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment">        we have following types:</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="comment">        -  asm_vc_32   - with asm code designed for Microsoft Visual C++ (32 bits)</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">        -  asm_gcc_32  - with asm code designed for GCC (32 bits)</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="comment">        -  asm_vc_64   - with asm for VC (64 bit)</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="comment">        -  asm_gcc_64  - with asm for GCC (64 bit)</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="comment">        -  no_asm_32   - pure C++ version (32 bit) - without any asm code</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment">        -  no_asm_64   - pure C++ version (64 bit) - without any asm code</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#abb8fcf0f22ac6c88948be1ed7bde0c4d">  145</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classttmath_1_1_big.html#abb8fcf0f22ac6c88948be1ed7bde0c4d">LibTypeStr</a>()</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    {</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_u_int.html#add0cf14a0684fc8e7d8b1471759b35e0">UInt&lt;man&gt;::LibTypeStr</a>();</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    }</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="comment">        returning the currect type of the library</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa4a581c558d22d3c086819d5854f6cab">  154</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="namespacettmath.html#a5c3bd12cd3d050852a60e022e5e12799">LibTypeCode</a> <a class="code" href="classttmath_1_1_big.html#aa4a581c558d22d3c086819d5854f6cab">LibType</a>()</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_u_int.html#adce4f7a208708d70114fc49091f389c6">UInt&lt;man&gt;::LibType</a>();</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="comment">        this method moves all bits from mantissa into its left side</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment">        (suitably changes the exponent) or if the mantissa is zero</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment">        it sets the exponent to zero as well</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="comment">        (and clears the sign bit and sets the zero bit)</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="comment">        it can return a carry</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="comment">        the carry will be when we don&#39;t have enough space in the exponent</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="comment">        you don&#39;t have to use this method if you don&#39;t change the mantissa</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="comment">        and exponent directly</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">  173</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>()</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    {</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <span class="keywordflow">if</span>( mantissa.<a class="code" href="classttmath_1_1_u_int.html#a2421734423858544d65515584fa4683c">IsTheHighestBitSet</a>() )</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        {</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a>);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">if</span>( CorrectZero() )</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> comp = mantissa.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordflow">return</span> exponent.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( comp );</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    }</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="comment">        if the mantissa is equal zero this method sets exponent to zero and</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="comment">        info without the sign</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="comment">        it returns true if there was the correction</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keywordtype">bool</span> CorrectZero()</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordflow">if</span>( mantissa.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() )</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            <a class="code" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">SetInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a>);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;            exponent.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        }</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        {</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a>);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        }</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    }</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="comment">        this method clears a specific bit in the &#39;info&#39; variable</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="comment">        bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc.</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">  224</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> bit)</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        info = info &amp; (~bit);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="comment">        this method sets a specific bit in the &#39;info&#39; variable</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="comment">        bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc.</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">  236</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">SetInfoBit</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> bit)</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    {</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        info = info | bit;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="comment">        this method returns true if a specific bit in the &#39;info&#39; variable is set</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="comment">        bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc.</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">  247</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">IsInfoBit</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> bit)<span class="keyword"> const</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">return</span> (info &amp; bit) != 0;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    }</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="comment">        this method sets zero</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">  256</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>()</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        info = <a class="code" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a>;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        exponent.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="comment">/*</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="comment">            we don&#39;t have to compensate zero</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="comment">        */</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    }</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="comment"></span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="comment">        this method sets one</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">  271</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>()</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    {</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;        info = 0;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - 1);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        <span class="comment">// don&#39;t have to Standardize() - the last bit from mantissa is set</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    }</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="comment">        this method sets value 0.5</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#add0ae88434679a663de0f5b3822d0146">  285</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#add0ae88434679a663de0f5b3822d0146">Set05</a>()</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    {</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        exponent.<a class="code" href="classttmath_1_1_int.html#ab46339e71ac07f2c8717fcfb3e6f20e7">SubOne</a>();</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    }</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="comment">        this method sets NaN flag (Not a Number)</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="comment">        when this flag is set that means there is no a valid number</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">  296</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>()</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    {</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">SetInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a6219093f504910a0e8415844157c70fc">TTMATH_BIG_NAN</a>);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    }</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="comment">        this method sets NaN flag (Not a Number)</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;<span class="comment">        also clears the mantissa and exponent (similarly as it would be a zero value)</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a71805011593c0be2e134dae8d71983ea">  306</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a71805011593c0be2e134dae8d71983ea">SetZeroNan</a>()</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    }</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;<span class="comment">        this method swappes this for an argument</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">  316</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">Swap</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2)</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    {</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> info_temp = info;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        info = ss2.info;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        ss2.info = info_temp;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        exponent.<a class="code" href="classttmath_1_1_u_int.html#a47f6a6820ea8447013d8e20ae5fa0545">Swap</a>(ss2.exponent);</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a47f6a6820ea8447013d8e20ae5fa0545">Swap</a>(ss2.mantissa);</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    }</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="comment">        this method sets the mantissa of the value of pi</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="keywordtype">void</span> SetMantissaPi()</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    {</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="comment">// this is a static table which represents the value of Pi (mantissa of it)</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="comment">// (first is the highest word)</span></div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="comment">// we must define this table as &#39;unsigned int&#39; because </span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    <span class="comment">// both on 32bit and 64bit platforms this table is 32bit</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp_table[] = {</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        0xc90fdaa2, 0x2168c234, 0xc4c6628b, 0x80dc1cd1, 0x29024e08, 0x8a67cc74, 0x020bbea6, 0x3b139b22, </div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        0x514a0879, 0x8e3404dd, 0xef9519b3, 0xcd3a431b, 0x302b0a6d, 0xf25f1437, 0x4fe1356d, 0x6d51c245, </div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        0xe485b576, 0x625e7ec6, 0xf44c42e9, 0xa637ed6b, 0x0bff5cb6, 0xf406b7ed, 0xee386bfb, 0x5a899fa5, </div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        0xae9f2411, 0x7c4b1fe6, 0x49286651, 0xece45b3d, 0xc2007cb8, 0xa163bf05, 0x98da4836, 0x1c55d39a, </div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        0x69163fa8, 0xfd24cf5f, 0x83655d23, 0xdca3ad96, 0x1c62f356, 0x208552bb, 0x9ed52907, 0x7096966d, </div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        0x670c354e, 0x4abc9804, 0xf1746c08, 0xca18217c, 0x32905e46, 0x2e36ce3b, 0xe39e772c, 0x180e8603, </div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        0x9b2783a2, 0xec07a28f, 0xb5c55df0, 0x6f4c52c9, 0xde2bcbf6, 0x95581718, 0x3995497c, 0xea956ae5, </div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        0x15d22618, 0x98fa0510, 0x15728e5a, 0x8aaac42d, 0xad33170d, 0x04507a33, 0xa85521ab, 0xdf1cba64, </div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        0xecfb8504, 0x58dbef0a, 0x8aea7157, 0x5d060c7d, 0xb3970f85, 0xa6e1e4c7, 0xabf5ae8c, 0xdb0933d7, </div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        0x1e8c94e0, 0x4a25619d, 0xcee3d226, 0x1ad2ee6b, 0xf12ffa06, 0xd98a0864, 0xd8760273, 0x3ec86a64, </div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        0x521f2b18, 0x177b200c, 0xbbe11757, 0x7a615d6c, 0x770988c0, 0xbad946e2, 0x08e24fa0, 0x74e5ab31, </div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        0x43db5bfc, 0xe0fd108e, 0x4b82d120, 0xa9210801, 0x1a723c12, 0xa787e6d7, 0x88719a10, 0xbdba5b26, </div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        0x99c32718, 0x6af4e23c, 0x1a946834, 0xb6150bda, 0x2583e9ca, 0x2ad44ce8, 0xdbbbc2db, 0x04de8ef9, </div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        0x2e8efc14, 0x1fbecaa6, 0x287c5947, 0x4e6bc05d, 0x99b2964f, 0xa090c3a2, 0x233ba186, 0x515be7ed, </div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        0x1f612970, 0xcee2d7af, 0xb81bdd76, 0x2170481c, 0xd0069127, 0xd5b05aa9, 0x93b4ea98, 0x8d8fddc1, </div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        0x86ffb7dc, 0x90a6c08f, 0x4df435c9, 0x34028492, 0x36c3fab4, 0xd27c7026, 0xc1d4dcb2, 0x602646de, </div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;        0xc9751e76, 0x3dba37bd, 0xf8ff9406, 0xad9e530e, 0xe5db382f, 0x413001ae, 0xb06a53ed, 0x9027d831, </div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        0x179727b0, 0x865a8918, 0xda3edbeb, 0xcf9b14ed, 0x44ce6cba, 0xced4bb1b, 0xdb7f1447, 0xe6cc254b, </div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        0x33205151, 0x2bd7af42, 0x6fb8f401, 0x378cd2bf, 0x5983ca01, 0xc64b92ec, 0xf032ea15, 0xd1721d03, </div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        0xf482d7ce, 0x6e74fef6, 0xd55e702f, 0x46980c82, 0xb5a84031, 0x900b1c9e, 0x59e7c97f, 0xbec7e8f3, </div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        0x23a97a7e, 0x36cc88be, 0x0f1d45b7, 0xff585ac5, 0x4bd407b2, 0x2b4154aa, 0xcc8f6d7e, 0xbf48e1d8, </div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        0x14cc5ed2, 0x0f8037e0, 0xa79715ee, 0xf29be328, 0x06a1d58b, 0xb7c5da76, 0xf550aa3d, 0x8a1fbff0, </div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        0xeb19ccb1, 0xa313d55c, 0xda56c9ec, 0x2ef29632, 0x387fe8d7, 0x6e3c0468, 0x043e8f66, 0x3f4860ee, </div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        0x12bf2d5b, 0x0b7474d6, 0xe694f91e, 0x6dbe1159, 0x74a3926f, 0x12fee5e4, 0x38777cb6, 0xa932df8c, </div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        0xd8bec4d0, 0x73b931ba, 0x3bc832b6, 0x8d9dd300, 0x741fa7bf, 0x8afc47ed, 0x2576f693, 0x6ba42466, </div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        0x3aab639c, 0x5ae4f568, 0x3423b474, 0x2bf1c978, 0x238f16cb, 0xe39d652d, 0xe3fdb8be, 0xfc848ad9, </div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        0x22222e04, 0xa4037c07, 0x13eb57a8, 0x1a23f0c7, 0x3473fc64, 0x6cea306b, 0x4bcbc886, 0x2f8385dd, </div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        0xfa9d4b7f, 0xa2c087e8, 0x79683303, 0xed5bdd3a, 0x062b3cf5, 0xb3a278a6, 0x6d2a13f8, 0x3f44f82d, </div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        0xdf310ee0, 0x74ab6a36, 0x4597e899, 0xa0255dc1, 0x64f31cc5, 0x0846851d, 0xf9ab4819, 0x5ded7ea1, </div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        0xb1d510bd, 0x7ee74d73, 0xfaf36bc3, 0x1ecfa268, 0x359046f4, 0xeb879f92, 0x4009438b, 0x481c6cd7, </div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        0x889a002e, 0xd5ee382b, 0xc9190da6, 0xfc026e47, 0x9558e447, 0x5677e9aa, 0x9e3050e2, 0x765694df, </div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        0xc81f56e8, 0x80b96e71, 0x60c980dd, 0x98a573ea, 0x4472065a, 0x139cd290, 0x6cd1cb72, 0x9ec52a53 <span class="comment">// last one was: 0x9ec52a52</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <span class="comment">//0x86d44014, ...</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        <span class="comment">// (the last word 0x9ec52a52 was rounded up because the next one is 0x86d44014 -- first bit is one 0x8..)</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="comment">// 256 32bit words for the mantissa -- about 2464 valid decimal digits</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;        };</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        <span class="comment">// the value of PI is comming from the website http://zenwerx.com/pi.php</span></div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        <span class="comment">// 3101 digits were taken from this website</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        <span class="comment">//  (later the digits were compared with:</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        <span class="comment">//   http://www.eveandersson.com/pi/digits/1000000 and http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html )</span></div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        <span class="comment">// and they were set into Big&lt;1,400&gt; type (using operator=(const char*) on a 32bit platform)</span></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <span class="comment">// and then the first 256 words were taken into this table</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        <span class="comment">// (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256,</span></div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        <span class="comment">// and on 64bit platform value 128 (256/2=128))</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    </div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a12602f12aa9618ac8a24d151b9cea650">SetFromTable</a>(temp_table, <span class="keyword">sizeof</span>(temp_table) / <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    }</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;<span class="comment">        this method sets the value of pi</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa7791262bfc4007520edeb1e68624e9a">  393</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#aa7791262bfc4007520edeb1e68624e9a">SetPi</a>()</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <span class="comment">// IMPROVE ME</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="comment">// give some compiler-time warning when the size of mantissa is greater than the builtin size of the mantissa pi</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;        SetMantissaPi();</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;        info = 0;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + 2;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    }</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="comment">        this method sets the value of 0.5 * pi</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acbbb59d97c06e93138551fb160c399c0">  406</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#acbbb59d97c06e93138551fb160c399c0">Set05Pi</a>()</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    {</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        <span class="comment">// IMPROVE ME</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        <span class="comment">// give some compiler-time warning when the size of mantissa is greater than the builtin size of the mantissa pi</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        SetMantissaPi();</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        info = 0;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + 1;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    }</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="comment">        this method sets the value of 2 * pi</span></div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a90e579e35cb45cbe5c49d03cd5e531ef">  419</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a90e579e35cb45cbe5c49d03cd5e531ef">Set2Pi</a>()</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    {</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <span class="comment">// IMPROVE ME</span></div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;        <span class="comment">// give some compiler-time warning when the size of mantissa is greater than the builtin size of the mantissa pi</span></div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        SetMantissaPi();</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;        info = 0;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + 3;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    }</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="comment">        this method sets the value of e</span></div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="comment">        (the base of the natural logarithm)</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a25b9b67e9002f60d70d729f896279e36">  433</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a25b9b67e9002f60d70d729f896279e36">SetE</a>()</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    {</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp_table[] = {</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        0xadf85458, 0xa2bb4a9a, 0xafdc5620, 0x273d3cf1, 0xd8b9c583, 0xce2d3695, 0xa9e13641, 0x146433fb, </div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        0xcc939dce, 0x249b3ef9, 0x7d2fe363, 0x630c75d8, 0xf681b202, 0xaec4617a, 0xd3df1ed5, 0xd5fd6561, </div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        0x2433f51f, 0x5f066ed0, 0x85636555, 0x3ded1af3, 0xb557135e, 0x7f57c935, 0x984f0c70, 0xe0e68b77, </div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        0xe2a689da, 0xf3efe872, 0x1df158a1, 0x36ade735, 0x30acca4f, 0x483a797a, 0xbc0ab182, 0xb324fb61, </div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        0xd108a94b, 0xb2c8e3fb, 0xb96adab7, 0x60d7f468, 0x1d4f42a3, 0xde394df4, 0xae56ede7, 0x6372bb19, </div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        0x0b07a7c8, 0xee0a6d70, 0x9e02fce1, 0xcdf7e2ec, 0xc03404cd, 0x28342f61, 0x9172fe9c, 0xe98583ff, </div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        0x8e4f1232, 0xeef28183, 0xc3fe3b1b, 0x4c6fad73, 0x3bb5fcbc, 0x2ec22005, 0xc58ef183, 0x7d1683b2, </div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        0xc6f34a26, 0xc1b2effa, 0x886b4238, 0x611fcfdc, 0xde355b3b, 0x6519035b, 0xbc34f4de, 0xf99c0238, </div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        0x61b46fc9, 0xd6e6c907, 0x7ad91d26, 0x91f7f7ee, 0x598cb0fa, 0xc186d91c, 0xaefe1309, 0x85139270, </div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        0xb4130c93, 0xbc437944, 0xf4fd4452, 0xe2d74dd3, 0x64f2e21e, 0x71f54bff, 0x5cae82ab, 0x9c9df69e, </div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        0xe86d2bc5, 0x22363a0d, 0xabc52197, 0x9b0deada, 0x1dbf9a42, 0xd5c4484e, 0x0abcd06b, 0xfa53ddef, </div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        0x3c1b20ee, 0x3fd59d7c, 0x25e41d2b, 0x669e1ef1, 0x6e6f52c3, 0x164df4fb, 0x7930e9e4, 0xe58857b6, </div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        0xac7d5f42, 0xd69f6d18, 0x7763cf1d, 0x55034004, 0x87f55ba5, 0x7e31cc7a, 0x7135c886, 0xefb4318a, </div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        0xed6a1e01, 0x2d9e6832, 0xa907600a, 0x918130c4, 0x6dc778f9, 0x71ad0038, 0x092999a3, 0x33cb8b7a, </div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        0x1a1db93d, 0x7140003c, 0x2a4ecea9, 0xf98d0acc, 0x0a8291cd, 0xcec97dcf, 0x8ec9b55a, 0x7f88a46b, </div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        0x4db5a851, 0xf44182e1, 0xc68a007e, 0x5e0dd902, 0x0bfd64b6, 0x45036c7a, 0x4e677d2c, 0x38532a3a, </div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        0x23ba4442, 0xcaf53ea6, 0x3bb45432, 0x9b7624c8, 0x917bdd64, 0xb1c0fd4c, 0xb38e8c33, 0x4c701c3a, </div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        0xcdad0657, 0xfccfec71, 0x9b1f5c3e, 0x4e46041f, 0x388147fb, 0x4cfdb477, 0xa52471f7, 0xa9a96910, </div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        0xb855322e, 0xdb6340d8, 0xa00ef092, 0x350511e3, 0x0abec1ff, 0xf9e3a26e, 0x7fb29f8c, 0x183023c3, </div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        0x587e38da, 0x0077d9b4, 0x763e4e4b, 0x94b2bbc1, 0x94c6651e, 0x77caf992, 0xeeaac023, 0x2a281bf6, </div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        0xb3a739c1, 0x22611682, 0x0ae8db58, 0x47a67cbe, 0xf9c9091b, 0x462d538c, 0xd72b0374, 0x6ae77f5e, </div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        0x62292c31, 0x1562a846, 0x505dc82d, 0xb854338a, 0xe49f5235, 0xc95b9117, 0x8ccf2dd5, 0xcacef403, </div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        0xec9d1810, 0xc6272b04, 0x5b3b71f9, 0xdc6b80d6, 0x3fdd4a8e, 0x9adb1e69, 0x62a69526, 0xd43161c1, </div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        0xa41d570d, 0x7938dad4, 0xa40e329c, 0xcff46aaa, 0x36ad004c, 0xf600c838, 0x1e425a31, 0xd951ae64, </div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        0xfdb23fce, 0xc9509d43, 0x687feb69, 0xedd1cc5e, 0x0b8cc3bd, 0xf64b10ef, 0x86b63142, 0xa3ab8829, </div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        0x555b2f74, 0x7c932665, 0xcb2c0f1c, 0xc01bd702, 0x29388839, 0xd2af05e4, 0x54504ac7, 0x8b758282, </div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;        0x2846c0ba, 0x35c35f5c, 0x59160cc0, 0x46fd8251, 0x541fc68c, 0x9c86b022, 0xbb709987, 0x6a460e74, </div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        0x51a8a931, 0x09703fee, 0x1c217e6c, 0x3826e52c, 0x51aa691e, 0x0e423cfc, 0x99e9e316, 0x50c1217b, </div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        0x624816cd, 0xad9a95f9, 0xd5b80194, 0x88d9c0a0, 0xa1fe3075, 0xa577e231, 0x83f81d4a, 0x3f2fa457, </div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        0x1efc8ce0, 0xba8a4fe8, 0xb6855dfe, 0x72b0a66e, 0xded2fbab, 0xfbe58a30, 0xfafabe1c, 0x5d71a87e, </div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        0x2f741ef8, 0xc1fe86fe, 0xa6bbfde5, 0x30677f0d, 0x97d11d49, 0xf7a8443d, 0x0822e506, 0xa9f4614e, </div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        0x011e2a94, 0x838ff88c, 0xd68c8bb7, 0xc51eef6d, 0x49ea8ab4, 0xf2c3df5b, 0xb4e0735a, 0xb0d68749</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        <span class="comment">// 0x2fe26dd4, ...</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        <span class="comment">// 256 32bit words for the mantissa -- about 2464 valid decimal digits</span></div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;        };</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;        <span class="comment">// above value was calculated using Big&lt;1,400&gt; type on a 32bit platform</span></div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <span class="comment">// and then the first 256 words were taken,</span></div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <span class="comment">// the calculating was made by using ExpSurrounding0(1) method</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="comment">// which took 1420 iterations</span></div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        <span class="comment">// (the result was compared with e taken from http://antwrp.gsfc.nasa.gov/htmltest/gifcity/e.2mil)</span></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        <span class="comment">// (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256,</span></div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="comment">// and on 64bit platform value 128 (256/2=128))</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a12602f12aa9618ac8a24d151b9cea650">SetFromTable</a>(temp_table, <span class="keyword">sizeof</span>(temp_table) / <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + 2;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        info = 0;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    }</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="comment">        this method sets the value of ln(2)</span></div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="comment">        the natural logarithm from 2</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac34df29b0b14bee8687eefc07b8698af">  490</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#ac34df29b0b14bee8687eefc07b8698af">SetLn2</a>()</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    {</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp_table[] = {</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;        0xb17217f7, 0xd1cf79ab, 0xc9e3b398, 0x03f2f6af, 0x40f34326, 0x7298b62d, 0x8a0d175b, 0x8baafa2b, </div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        0xe7b87620, 0x6debac98, 0x559552fb, 0x4afa1b10, 0xed2eae35, 0xc1382144, 0x27573b29, 0x1169b825, </div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;        0x3e96ca16, 0x224ae8c5, 0x1acbda11, 0x317c387e, 0xb9ea9bc3, 0xb136603b, 0x256fa0ec, 0x7657f74b, </div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        0x72ce87b1, 0x9d6548ca, 0xf5dfa6bd, 0x38303248, 0x655fa187, 0x2f20e3a2, 0xda2d97c5, 0x0f3fd5c6, </div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        0x07f4ca11, 0xfb5bfb90, 0x610d30f8, 0x8fe551a2, 0xee569d6d, 0xfc1efa15, 0x7d2e23de, 0x1400b396, </div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        0x17460775, 0xdb8990e5, 0xc943e732, 0xb479cd33, 0xcccc4e65, 0x9393514c, 0x4c1a1e0b, 0xd1d6095d, </div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;        0x25669b33, 0x3564a337, 0x6a9c7f8a, 0x5e148e82, 0x074db601, 0x5cfe7aa3, 0x0c480a54, 0x17350d2c, </div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;        0x955d5179, 0xb1e17b9d, 0xae313cdb, 0x6c606cb1, 0x078f735d, 0x1b2db31b, 0x5f50b518, 0x5064c18b, </div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        0x4d162db3, 0xb365853d, 0x7598a195, 0x1ae273ee, 0x5570b6c6, 0x8f969834, 0x96d4e6d3, 0x30af889b, </div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        0x44a02554, 0x731cdc8e, 0xa17293d1, 0x228a4ef9, 0x8d6f5177, 0xfbcf0755, 0x268a5c1f, 0x9538b982, </div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        0x61affd44, 0x6b1ca3cf, 0x5e9222b8, 0x8c66d3c5, 0x422183ed, 0xc9942109, 0x0bbb16fa, 0xf3d949f2, </div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        0x36e02b20, 0xcee886b9, 0x05c128d5, 0x3d0bd2f9, 0x62136319, 0x6af50302, 0x0060e499, 0x08391a0c, </div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        0x57339ba2, 0xbeba7d05, 0x2ac5b61c, 0xc4e9207c, 0xef2f0ce2, 0xd7373958, 0xd7622658, 0x901e646a, </div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        0x95184460, 0xdc4e7487, 0x156e0c29, 0x2413d5e3, 0x61c1696d, 0xd24aaebd, 0x473826fd, 0xa0c238b9, </div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        0x0ab111bb, 0xbd67c724, 0x972cd18b, 0xfbbd9d42, 0x6c472096, 0xe76115c0, 0x5f6f7ceb, 0xac9f45ae, </div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        0xcecb72f1, 0x9c38339d, 0x8f682625, 0x0dea891e, 0xf07afff3, 0xa892374e, 0x175eb4af, 0xc8daadd8, </div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        0x85db6ab0, 0x3a49bd0d, 0xc0b1b31d, 0x8a0e23fa, 0xc5e5767d, 0xf95884e0, 0x6425a415, 0x26fac51c, </div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        0x3ea8449f, 0xe8f70edd, 0x062b1a63, 0xa6c4c60c, 0x52ab3316, 0x1e238438, 0x897a39ce, 0x78b63c9f, </div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        0x364f5b8a, 0xef22ec2f, 0xee6e0850, 0xeca42d06, 0xfb0c75df, 0x5497e00c, 0x554b03d7, 0xd2874a00, </div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        0x0ca8f58d, 0x94f0341c, 0xbe2ec921, 0x56c9f949, 0xdb4a9316, 0xf281501e, 0x53daec3f, 0x64f1b783, </div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        0x154c6032, 0x0e2ff793, 0x33ce3573, 0xfacc5fdc, 0xf1178590, 0x3155bbd9, 0x0f023b22, 0x0224fcd8, </div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        0x471bf4f4, 0x45f0a88a, 0x14f0cd97, 0x6ea354bb, 0x20cdb5cc, 0xb3db2392, 0x88d58655, 0x4e2a0e8a, </div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        0x6fe51a8c, 0xfaa72ef2, 0xad8a43dc, 0x4212b210, 0xb779dfe4, 0x9d7307cc, 0x846532e4, 0xb9694eda, </div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        0xd162af05, 0x3b1751f3, 0xa3d091f6, 0x56658154, 0x12b5e8c2, 0x02461069, 0xac14b958, 0x784934b8, </div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        0xd6cce1da, 0xa5053701, 0x1aa4fb42, 0xb9a3def4, 0x1bda1f85, 0xef6fdbf2, 0xf2d89d2a, 0x4b183527, </div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        0x8fd94057, 0x89f45681, 0x2b552879, 0xa6168695, 0xc12963b0, 0xff01eaab, 0x73e5b5c1, 0x585318e7, </div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        0x624f14a5, 0x1a4a026b, 0x68082920, 0x57fd99b6, 0x6dc085a9, 0x8ac8d8ca, 0xf9eeeea9, 0x8a2400ca, </div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        0xc95f260f, 0xd10036f9, 0xf91096ac, 0x3195220a, 0x1a356b2a, 0x73b7eaad, 0xaf6d6058, 0x71ef7afb, </div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        0x80bc4234, 0x33562e94, 0xb12dfab4, 0x14451579, 0xdf59eae0, 0x51707062, 0x4012a829, 0x62c59cab, </div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        0x347f8304, 0xd889659e, 0x5a9139db, 0x14efcc30, 0x852be3e8, 0xfc99f14d, 0x1d822dd6, 0xe2f76797, </div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        0xe30219c8, 0xaa9ce884, 0x8a886eb3, 0xc87b7295, 0x988012e8, 0x314186ed, 0xbaf86856, 0xccd3c3b6, </div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        0xee94e62f, 0x110a6783, 0xd2aae89c, 0xcc3b76fc, 0x435a0ce1, 0x34c2838f, 0xd571ec6c, 0x1366a993 <span class="comment">// last one was: 0x1366a992</span></div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        <span class="comment">//0xcbb9ac40, ...</span></div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="comment">// (the last word 0x1366a992 was rounded up because the next one is 0xcbb9ac40 -- first bit is one 0xc..)</span></div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        <span class="comment">// 256 32bit words for the mantissa -- about 2464 valid decimal digits</span></div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        };  </div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        <span class="comment">// above value was calculated using Big&lt;1,400&gt; type on a 32bit platform</span></div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        <span class="comment">// and then the first 256 words were taken,</span></div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        <span class="comment">// the calculating was made by using LnSurrounding1(2) method</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        <span class="comment">// which took 4035 iterations</span></div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        <span class="comment">// (the result was compared with ln(2) taken from http://ja0hxv.calico.jp/pai/estart.html)</span></div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        <span class="comment">// (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256,</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <span class="comment">// and on 64bit platform value 128 (256/2=128))</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a12602f12aa9618ac8a24d151b9cea650">SetFromTable</a>(temp_table, <span class="keyword">sizeof</span>(temp_table) / <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        info = 0;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    }</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="comment">        this method sets the value of ln(10)</span></div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="comment">        the natural logarithm from 10</span></div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="comment">        I introduced this constant especially to make the conversion ToString()</span></div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="comment">        being faster. In fact the method ToString() is keeping values of logarithms</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="comment">        it has calculated but it must calculate the logarithm at least once.</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="comment">        If a program, which uses this library, is running for a long time this</span></div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="comment">        would be ok, but for programs which are running shorter, for example for</span></div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="comment">        CGI applications which only once are printing values, this would be much</span></div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;<span class="comment">        inconvenience. Then if we&#39;re printing with base (radix) 10 and the mantissa</span></div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;<span class="comment">        of our value is smaller than or equal to TTMATH_BUILTIN_VARIABLES_SIZE</span></div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="comment">        we don&#39;t calculate the logarithm but take it from this constant.</span></div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac205056b86c652cb859287118a7cfae9">  558</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#ac205056b86c652cb859287118a7cfae9">SetLn10</a>()</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    {</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp_table[] = {</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        0x935d8ddd, 0xaaa8ac16, 0xea56d62b, 0x82d30a28, 0xe28fecf9, 0xda5df90e, 0x83c61e82, 0x01f02d72, </div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        0x962f02d7, 0xb1a8105c, 0xcc70cbc0, 0x2c5f0d68, 0x2c622418, 0x410be2da, 0xfb8f7884, 0x02e516d6, </div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        0x782cf8a2, 0x8a8c911e, 0x765aa6c3, 0xb0d831fb, 0xef66ceb0, 0x4ab3c6fa, 0x5161bb49, 0xd219c7bb, </div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        0xca67b35b, 0x23605085, 0x8e93368d, 0x44789c4f, 0x5b08b057, 0xd5ede20f, 0x469ea58e, 0x9305e981, </div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        0xe2478fca, 0xad3aee98, 0x9cd5b42e, 0x6a271619, 0xa47ecb26, 0x978c5d4f, 0xdb1d28ea, 0x57d4fdc0, </div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        0xe40bf3cc, 0x1e14126a, 0x45765cde, 0x268339db, 0xf47fa96d, 0xeb271060, 0xaf88486e, 0xa9b7401e, </div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;        0x3dfd3c51, 0x748e6d6e, 0x3848c8d2, 0x5faf1bca, 0xe88047f1, 0x7b0d9b50, 0xa949eaaa, 0xdf69e8a5, </div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;        0xf77e3760, 0x4e943960, 0xe38a5700, 0xffde2db1, 0xad6bfbff, 0xd821ba0a, 0x4cb0466d, 0x61ba648e, </div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        0xef99c8e5, 0xf6974f36, 0x3982a78c, 0xa45ddfc8, 0x09426178, 0x19127a6e, 0x3b70fcda, 0x2d732d47, </div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;        0xb5e4b1c8, 0xc0e5a10a, 0xaa6604a5, 0x324ec3dc, 0xbc64ea80, 0x6e198566, 0x1f1d366c, 0x20663834, </div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        0x4d5e843f, 0x20642b97, 0x0a62d18e, 0x478f7bd5, 0x8fcd0832, 0x4a7b32a6, 0xdef85a05, 0xeb56323a, </div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;        0x421ef5e0, 0xb00410a0, 0xa0d9c260, 0x794a976f, 0xf6ff363d, 0xb00b6b33, 0xf42c58de, 0xf8a3c52d, </div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        0xed69b13d, 0xc1a03730, 0xb6524dc1, 0x8c167e86, 0x99d6d20e, 0xa2defd2b, 0xd006f8b4, 0xbe145a2a, </div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        0xdf3ccbb3, 0x189da49d, 0xbc1261c8, 0xb3e4daad, 0x6a36cecc, 0xb2d5ae5b, 0x89bf752f, 0xb5dfb353, </div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        0xff3065c4, 0x0cfceec8, 0x1be5a9a9, 0x67fddc57, 0xc4b83301, 0x006bf062, 0x4b40ed7a, 0x56c6cdcd, </div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;        0xa2d6fe91, 0x388e9e3e, 0x48a93f5f, 0x5e3b6eb4, 0xb81c4a5b, 0x53d49ea6, 0x8e668aea, 0xba83c7f8, </div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        0xfb5f06c3, 0x58ac8f70, 0xfa9d8c59, 0x8c574502, 0xbaf54c96, 0xc84911f0, 0x0482d095, 0x1a0af022, </div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        0xabbab080, 0xec97efd3, 0x671e4e0e, 0x52f166b6, 0xcd5cd226, 0x0dc67795, 0x2e1e34a3, 0xf799677f, </div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        0x2c1d48f1, 0x2944b6c5, 0x2ba1307e, 0x704d67f9, 0x1c1035e4, 0x4e927c63, 0x03cf12bf, 0xe2cd2e31, </div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;        0xf8ee4843, 0x344d51b0, 0xf37da42b, 0x9f0b0fd9, 0x134fb2d9, 0xf815e490, 0xd966283f, 0x23962766, </div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;        0xeceab1e4, 0xf3b5fc86, 0x468127e2, 0xb606d10d, 0x3a45f4b6, 0xb776102d, 0x2fdbb420, 0x80c8fa84, </div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;        0xd0ff9f45, 0xc58aef38, 0xdb2410fd, 0x1f1cebad, 0x733b2281, 0x52ca5f36, 0xddf29daa, 0x544334b8, </div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        0xdeeaf659, 0x4e462713, 0x1ed485b4, 0x6a0822e1, 0x28db471c, 0xa53938a8, 0x44c3bef7, 0xf35215c8, </div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        0xb382bc4e, 0x3e4c6f15, 0x6285f54c, 0x17ab408e, 0xccbf7f5e, 0xd16ab3f6, 0xced2846d, 0xf457e14f, </div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        0xbb45d9c5, 0x646ad497, 0xac697494, 0x145de32e, 0x93907128, 0xd263d521, 0x79efb424, 0xd64651d6, </div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        0xebc0c9f0, 0xbb583a44, 0xc6412c84, 0x85bb29a6, 0x4d31a2cd, 0x92954469, 0xa32b1abd, 0xf7f5202c, </div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        0xa4aa6c93, 0x2e9b53cf, 0x385ab136, 0x2741f356, 0x5de9c065, 0x6009901c, 0x88abbdd8, 0x74efcf73, </div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        0x3f761ad4, 0x35f3c083, 0xfd6b8ee0, 0x0bef11c7, 0xc552a89d, 0x58ce4a21, 0xd71e54f2, 0x4157f6c7, </div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        0xd4622316, 0xe98956d7, 0x450027de, 0xcbd398d8, 0x4b98b36a, 0x0724c25c, 0xdb237760, 0xe9324b68, </div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;        0x7523e506, 0x8edad933, 0x92197f00, 0xb853a326, 0xb330c444, 0x65129296, 0x34bc0670, 0xe177806d, </div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        0xe338dac4, 0x5537492a, 0xe19add83, 0xcf45000f, 0x5b423bce, 0x6497d209, 0xe30e18a1, 0x3cbf0687, </div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        0x67973103, 0xd9485366, 0x81506bba, 0x2e93a9a4, 0x7dd59d3f, 0xf17cd746, 0x8c2075be, 0x552a4348 <span class="comment">// last one was: 0x552a4347</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;        <span class="comment">// 0xb4a638ef, ...</span></div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        <span class="comment">//(the last word 0x552a4347 was rounded up because the next one is 0xb4a638ef -- first bit is one 0xb..)</span></div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        <span class="comment">// 256 32bit words for the mantissa -- about 2464 valid digits (decimal)</span></div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        };  </div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="comment">// above value was calculated using Big&lt;1,400&gt; type on a 32bit platform</span></div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        <span class="comment">// and then the first 256 32bit words were taken,</span></div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;        <span class="comment">// the calculating was made by using LnSurrounding1(10) method</span></div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;        <span class="comment">// which took 22080 iterations</span></div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;        <span class="comment">// (the result was compared with ln(10) taken from http://ja0hxv.calico.jp/pai/estart.html)</span></div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        <span class="comment">// (the formula used in LnSurrounding1(x) converges badly when</span></div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        <span class="comment">// the x is greater than one but in fact we can use it, only the</span></div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        <span class="comment">// number of iterations will be greater)</span></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;        <span class="comment">// (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256,</span></div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;        <span class="comment">// and on 64bit platform value 128 (256/2=128))</span></div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a12602f12aa9618ac8a24d151b9cea650">SetFromTable</a>(temp_table, <span class="keyword">sizeof</span>(temp_table) / <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)*<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + 2;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        info = 0;</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    }</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="comment">        this method sets the maximum value which can be held in this type</span></div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a4a4d897f3a1cd7eea680884dbf327ba6">  618</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a4a4d897f3a1cd7eea680884dbf327ba6">SetMax</a>()</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    {</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        info = 0;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a7fdeb0ac1b5fdd397f03fcfc9080488d">SetMax</a>();</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        exponent.<a class="code" href="classttmath_1_1_int.html#a5969b824a40d631c318dd027755028fd">SetMax</a>();</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        <span class="comment">// we don&#39;t have to use &#39;Standardizing()&#39; because the last bit from</span></div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;        <span class="comment">// the mantissa is set</span></div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;    }</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;<span class="comment">        this method sets the minimum value which can be held in this type</span></div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acb724c5ab24678fd24bc93189fef3973">  632</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#acb724c5ab24678fd24bc93189fef3973">SetMin</a>()</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    {</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;        info = 0;</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a7fdeb0ac1b5fdd397f03fcfc9080488d">SetMax</a>();</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        exponent.<a class="code" href="classttmath_1_1_int.html#a5969b824a40d631c318dd027755028fd">SetMax</a>();</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        <span class="comment">// we don&#39;t have to use &#39;Standardizing()&#39; because the last bit from</span></div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;        <span class="comment">// the mantissa is set</span></div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;    }</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;<span class="comment">        testing whether there is a value zero or not</span></div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">  648</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">IsInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a>);</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    }</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;<span class="comment">        this method returns true when there&#39;s the sign set</span></div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;<span class="comment">        also we don&#39;t check the NaN flag</span></div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">  658</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">IsInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    }</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="comment">        this method returns true when there is not a valid number</span></div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">  667</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">IsInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a6219093f504910a0e8415844157c70fc">TTMATH_BIG_NAN</a>);</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    }</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;<span class="comment">        this method clears the sign</span></div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;<span class="comment">        (there&#39;ll be an absolute value)</span></div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;<span class="comment">        samples</span></div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;<span class="comment">        -   -1 -&gt; 1</span></div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;<span class="comment">        -   2  -&gt; 2</span></div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">  682</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>()</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    {</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;    }</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;<span class="comment">        this method remains the &#39;sign&#39; of the value</span></div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;<span class="comment">        samples</span></div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;<span class="comment">        -    -2 = -1</span></div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="comment">        -     0 = 0</span></div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;<span class="comment">        -    10 = 1</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ad936f1c064b22965cabc9b818ade48a9">  696</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#ad936f1c064b22965cabc9b818ade48a9">Sgn</a>()</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    {</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        <span class="comment">// we have to check the NaN flag, because the next SetOne() method would clear it</span></div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;        {</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        }</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>(); <span class="comment">// !! is nedeed here?</span></div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    }</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="comment">        this method sets the sign</span></div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;<span class="comment">        samples</span></div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;<span class="comment">        -   -1 -&gt; -1</span></div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;<span class="comment">        -   2  -&gt; -2</span></div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="comment">        we do not check whether there is a zero or not, if you&#39;re using this method</span></div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;<span class="comment">        you must be sure that the value is (or will be afterwards) different from zero</span></div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">  726</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>()</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    {</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">SetInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    }</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;<span class="comment">        this method changes the sign</span></div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;<span class="comment">        when there is a value of zero then the sign is not changed</span></div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;<span class="comment">        samples</span></div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="comment">        -   -1 -&gt; 1</span></div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;<span class="comment">        -   2  -&gt; -2</span></div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">  740</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">ChangeSign</a>()</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    {</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;        <span class="comment">// we don&#39;t have to check the NaN flag here</span></div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ClearInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;            <a class="code" href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">SetInfoBit</a>(<a class="code" href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a>);</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    }</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;<span class="comment">        this method does the half-to-even rounding (banker&#39;s rounding)</span></div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;<span class="comment">        if is_half is:</span></div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;<span class="comment">        -  true  - that means the rest was equal the half (0.5 decimal)</span></div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="comment">        -  false - that means the rest was greater than a half (greater than 0.5 decimal)</span></div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;<span class="comment">        if the rest was less than a half then don&#39;t call this method</span></div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;<span class="comment">        (the rounding should does nothing then)</span></div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> RoundHalfToEven(<span class="keywordtype">bool</span> is_half, <span class="keywordtype">bool</span> rounding_up = <span class="keyword">true</span>)</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;    {</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;        <span class="keywordflow">if</span>( !is_half || mantissa.<a class="code" href="classttmath_1_1_u_int.html#a65b27dabbb8cefab74c1c31c6610a2b6">IsTheLowestBitSet</a>() )</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;        {</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;            <span class="keywordflow">if</span>( rounding_up )</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;            {</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                <span class="keywordflow">if</span>( mantissa.<a class="code" href="classttmath_1_1_u_int.html#aaa62dbe97d8e2ceb434c5c3cac9cd0e1">AddOne</a>() )</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                {</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;                    mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>(1, 1);</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;                    c = exponent.<a class="code" href="classttmath_1_1_int.html#abdf555b866fd8a2e9bcadde81e253053">AddOne</a>();</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;                }</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;            }</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;            {</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;<span class="preprocessor">                #ifdef TTMATH_DEBUG</span></div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;                <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c_from_zero =</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;<span class="preprocessor">                #endif</span></div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                mantissa.<a class="code" href="classttmath_1_1_u_int.html#afd3f1dc2508a6625f0a5906779e58d00">SubOne</a>();</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                <span class="comment">// we&#39;re using rounding_up=false in Add() when the mantissas have different signs</span></div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;                <span class="comment">// mantissa can be zero only when previous mantissa was equal to ss2.mantissa</span></div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;                <span class="comment">// but in such a case &#39;last_bit_set&#39; will not be set and consequently &#39;do_rounding&#39; will be false</span></div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;                TTMATH_ASSERT( c_from_zero == 0 )</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;            }</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;        }</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    }</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<span class="comment">    *   basic mathematic functions</span></div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;<span class="comment">        this method adds one to the existing value</span></div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> AddOne()</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    {</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;    Big&lt;exp, man&gt; one;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        one.SetOne();</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(one);</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    }</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;<span class="comment">        this method subtracts one from the existing value</span></div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> SubOne()</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    {</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;    Big&lt;exp, man&gt; one;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;        one.SetOne();</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>(one);</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    }</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;<span class="comment">        an auxiliary method for adding</span></div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    <span class="keywordtype">void</span> AddCheckExponents( Big&lt;exp, man&gt; &amp; ss2,</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                            Int&lt;exp&gt; &amp; exp_offset,</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                            <span class="keywordtype">bool</span> &amp; last_bit_set,</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;                            <span class="keywordtype">bool</span> &amp; rest_zero,</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;                            <span class="keywordtype">bool</span> &amp; do_adding,</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;                            <span class="keywordtype">bool</span> &amp; do_rounding)</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    {</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    Int&lt;exp&gt; mantissa_size_in_bits( man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> );</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;        <span class="keywordflow">if</span>( exp_offset == mantissa_size_in_bits )</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        {</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;            last_bit_set = ss2.mantissa.IsTheHighestBitSet();</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;            rest_zero    = ss2.mantissa.AreFirstBitsZero(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - 1);</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;            do_rounding  = <span class="keyword">true</span>;    <span class="comment">// we&#39;are only rounding</span></div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;        }</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;        <span class="keywordflow">if</span>( exp_offset &lt; mantissa_size_in_bits )</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;        {</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> moved = exp_offset.ToInt(); <span class="comment">// how many times we must move ss2.mantissa</span></div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;            rest_zero  = <span class="keyword">true</span>;</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;            <span class="keywordflow">if</span>( moved &gt; 0 )</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;            {</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;                last_bit_set = static_cast&lt;bool&gt;( ss2.mantissa.GetBit(moved-1) );</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;                <span class="keywordflow">if</span>( moved &gt; 1 )</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;                    rest_zero = ss2.mantissa.AreFirstBitsZero(moved - 1);</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;            </div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;                <span class="comment">// (2) moving &#39;exp_offset&#39; times</span></div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;                ss2.mantissa.Rcr(moved, 0);</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;            }</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;            do_adding    = <span class="keyword">true</span>; </div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;            do_rounding  = <span class="keyword">true</span>;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;        }</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;        <span class="comment">// if exp_offset is greater than mantissa_size_in_bits then we do nothing</span></div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        <span class="comment">// ss2 is too small for taking into consideration in the sum</span></div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    }</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;<span class="comment">        an auxiliary method for adding</span></div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> AddMantissas(  Big&lt;exp, man&gt; &amp; ss2,</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;                        <span class="keywordtype">bool</span> &amp; last_bit_set,</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;                        <span class="keywordtype">bool</span> &amp; rest_zero)</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;    {</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() == ss2.IsSign() )</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        {</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;            <span class="comment">// values have the same signs</span></div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;            <span class="keywordflow">if</span>( mantissa.<a class="code" href="classttmath_1_1_u_int.html#af69f4f1a71948175abc653a82a728665">Add</a>(ss2.mantissa) )</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;            {</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;                <span class="comment">// we have one bit more from addition (carry)</span></div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;                <span class="comment">// now rest_zero means the old rest_zero with the old last_bit_set</span></div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;                rest_zero    = (!last_bit_set &amp;&amp; rest_zero);</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;                last_bit_set = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>(1,1);</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;                c += exponent.<a class="code" href="classttmath_1_1_int.html#abdf555b866fd8a2e9bcadde81e253053">AddOne</a>();</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;            }</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;        }</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        {</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;            <span class="comment">// values have different signs</span></div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;            <span class="comment">// there shouldn&#39;t be a carry here because</span></div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;            <span class="comment">// (1) (2) guarantee that the mantissa of this</span></div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;            <span class="comment">// is greater than or equal to the mantissa of the ss2</span></div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;<span class="preprocessor">            #ifdef TTMATH_DEBUG</span></div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c_temp =</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;<span class="preprocessor">            #endif</span></div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a62de1450c61299cdbbda5632b85386c8">Sub</a>(ss2.mantissa);</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;            TTMATH_ASSERT( c_temp == 0 )</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;        }</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    }</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;<span class="comment">        Addition this = this + ss2</span></div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;<span class="comment">        it returns carry if the sum is too big</span></div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">  930</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> ss2, <span class="keywordtype">bool</span> round = <span class="keyword">true</span>, <span class="keywordtype">bool</span> adding = <span class="keyword">true</span>)</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;    {</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    <span class="keywordtype">bool</span> last_bit_set, rest_zero, do_adding, do_rounding, rounding_up;</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;        <span class="keywordflow">if</span>( !adding )</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;            ss2.<a class="code" href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">ChangeSign</a>(); <span class="comment">// subtracting</span></div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;        <span class="comment">// (1) abs(this) will be &gt;= abs(ss2)</span></div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(ss2) )</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">Swap</a>(ss2);</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> exp_offset( exponent );</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;        exp_offset.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( ss2.exponent );</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;        <span class="keywordflow">if</span>( !exp_offset.<a class="code" href="classttmath_1_1_int.html#aeb74289f960343a11bf25a9b510fd99d">Abs</a>() )</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;        {</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;            <span class="comment">// if there is a carry in Abs it means the value in exp_offset has only the lowest bit set</span></div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;            <span class="comment">// so the value is the smallest possible integer</span></div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;            <span class="comment">// and its Abs would be greater than mantissa size in bits</span></div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;            <span class="comment">// so the method AddCheckExponents would do nothing</span></div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;            last_bit_set = rest_zero = do_adding = do_rounding = <span class="keyword">false</span>;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;            rounding_up = (<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() == ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>());</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;            AddCheckExponents(ss2, exp_offset, last_bit_set, rest_zero, do_adding, do_rounding);</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;            <span class="keywordflow">if</span>( do_adding )</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                c += AddMantissas(ss2, last_bit_set, rest_zero);</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;            <span class="keywordflow">if</span>( !round || !last_bit_set )</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;                do_rounding = <span class="keyword">false</span>;</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;            <span class="keywordflow">if</span>( do_rounding )</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;                c += RoundHalfToEven(rest_zero, rounding_up);</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;            <span class="keywordflow">if</span>( do_adding || do_rounding )</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;                c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;        }</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;    }</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;<span class="comment">        Subtraction this = this - ss2</span></div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;<span class="comment">        it returns carry if the result is too big</span></div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">  986</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2, <span class="keywordtype">bool</span> round = <span class="keyword">true</span>)</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;    {</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(ss2, round, <span class="keyword">false</span>);</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;    }</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;        </div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;<span class="comment">        bitwise AND</span></div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;<span class="comment">        this and ss2 must be &gt;= 0</span></div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;<span class="comment">        -   0 - ok</span></div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;<span class="comment">        -   1 - carry</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="comment">        -   2 - this or ss2 was negative</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#afd2e1ded5ff360db5f2b6e1b98fb360f"> 1002</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#afd2e1ded5ff360db5f2b6e1b98fb360f">BitAnd</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> ss2)</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;        {</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;        }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;        {</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;        }</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;        <span class="comment">// abs(this) will be &gt;= abs(ss2)</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(ss2) )</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">Swap</a>(ss2);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> exp_offset( exponent );</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> mantissa_size_in_bits( man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> );</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;        exp_offset.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( ss2.exponent );</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;        <span class="keywordflow">if</span>( exp_offset.<a class="code" href="classttmath_1_1_int.html#aeb74289f960343a11bf25a9b510fd99d">Abs</a>() || exp_offset &gt;= mantissa_size_in_bits )</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;        {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;            <span class="comment">// if there is a carry in Abs it means the value in exp_offset has only the lowest bit set</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;            <span class="comment">// so the value is the smallest possible integer</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;            <span class="comment">// and its Abs would be greater than mantissa size in bits</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;            <span class="comment">// the second value is too small</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;        }</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;        <span class="comment">// exp_offset &lt; mantissa_size_in_bits, moving &#39;exp_offset&#39; times</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;        ss2.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>( exp_offset.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>(), 0 );</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a3f305dc39575008dc2ad1f094cdccacc">BitAnd</a>(ss2.mantissa);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;    }</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment">        bitwise OR</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment">        this and ss2 must be &gt;= 0</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="comment">        -   0 - ok</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment">        -   1 - carry</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment">        -   2 - this or ss2 was negative</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ae050abccee92058b55a9a890350eb23d"> 1063</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ae050abccee92058b55a9a890350eb23d">BitOr</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> ss2)</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;        {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;        }</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;        </div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;        {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;            *<span class="keyword">this</span> = ss2;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;        }</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;        <span class="comment">// abs(this) will be &gt;= abs(ss2)</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(ss2) )</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">Swap</a>(ss2);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> exp_offset( exponent );</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> mantissa_size_in_bits( man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> );</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;        exp_offset.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( ss2.exponent );</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;        <span class="keywordflow">if</span>( exp_offset.<a class="code" href="classttmath_1_1_int.html#aeb74289f960343a11bf25a9b510fd99d">Abs</a>() || exp_offset &gt;= mantissa_size_in_bits )</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;        {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;            <span class="comment">// if there is a carry in Abs it means the value in exp_offset has only the lowest bit set</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;            <span class="comment">// so the value is the smallest possible integer</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;            <span class="comment">// and its Abs would be greater than mantissa size in bits</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;            <span class="comment">// the second value is too small</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;        }</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;        <span class="comment">// exp_offset &lt; mantissa_size_in_bits, moving &#39;exp_offset&#39; times</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;        ss2.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>( exp_offset.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>(), 0 );</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#ab254e021f626e59b5e32e0b8e02ce9be">BitOr</a>(ss2.mantissa);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;    }</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="comment">        bitwise XOR</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">        this and ss2 must be &gt;= 0</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">        -   0 - ok</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">        -   1 - carry</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="comment">        -   2 - this or ss2 was negative</span></div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a7d291abddb1d43ca4784ba152cdd6d25"> 1123</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a7d291abddb1d43ca4784ba152cdd6d25">BitXor</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> ss2)</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;    {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;        {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;        }</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;        </div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;        {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;            *<span class="keyword">this</span> = ss2;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;        }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;        <span class="comment">// abs(this) will be &gt;= abs(ss2)</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(ss2) )</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">Swap</a>(ss2);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> exp_offset( exponent );</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;        <a class="code" href="classttmath_1_1_int.html">Int&lt;exp&gt;</a> mantissa_size_in_bits( man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> );</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;        exp_offset.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( ss2.exponent );</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;        <span class="keywordflow">if</span>( exp_offset.<a class="code" href="classttmath_1_1_int.html#aeb74289f960343a11bf25a9b510fd99d">Abs</a>() || exp_offset &gt;= mantissa_size_in_bits )</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;        {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;            <span class="comment">// if there is a carry in Abs it means the value in exp_offset has only the lowest bit set</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;            <span class="comment">// so the value is the smallest possible integer</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;            <span class="comment">// and its Abs would be greater than mantissa size in bits</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;            <span class="comment">// the second value is too small</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;        }</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;        <span class="comment">// exp_offset &lt; mantissa_size_in_bits, moving &#39;exp_offset&#39; times</span></div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        ss2.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>( exp_offset.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>(), 0 );</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a82d9a7e2147c21a09bd7480d5d046336">BitXor</a>(ss2.mantissa);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;    }</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;<span class="comment">        Multiplication this = this * ss2 (ss2 is uint)</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="comment">        ss2 without a sign</span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01179"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a096173e99072ed2ef2dc52071c6b4b7a"> 1179</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a096173e99072ed2ef2dc52071c6b4b7a">MulUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ss2)</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;    {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;    <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man+1&gt;</a> man_result;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i,c = 0;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;        <span class="keywordflow">if</span>( ss2 == 0 )</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;        {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;        }</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        <span class="comment">// man_result = mantissa * ss2.mantissa</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a47b57350163b4dc79e480995fc044ad7">MulInt</a>(ss2, man_result);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> bit = <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man&gt;::FindLeadingBitInWord</a>(man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man]); <span class="comment">// man - last word</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;        </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;        <span class="keywordflow">if</span>( bit!=-1 &amp;&amp; <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(bit) &gt; (<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>/2) )</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;        {</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;            <span class="comment">// &#39;i&#39; will be from 0 to TTMATH_BITS_PER_UINT</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;            i = man_result.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;            c = exponent.<a class="code" href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">Add</a>( <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - i );</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;            <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;                mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i+1];</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;        }</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;        {</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;            <span class="keywordflow">if</span>( bit != -1 )</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;            {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;                man_result.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>(bit+1, 0);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;                c += exponent.<a class="code" href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">Add</a>(bit+1);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;            }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;            <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;                mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i];</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;        }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;    }</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment">        Multiplication this = this * ss2 (ss2 is sint)</span></div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment">        ss2 with a sign</span></div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01233"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a2287eb7f44b7483d93ffb32e490d4987"> 1233</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a2287eb7f44b7483d93ffb32e490d4987">MulInt</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> ss2)</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;        <span class="keywordflow">if</span>( ss2 == 0 )</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;        {</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;        }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() == (ss2&lt;0) )</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;        {</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;            <span class="comment">// the signs are the same (both are either - or +), the result is positive</span></div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>();</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;        }</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;        {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;            <span class="comment">// the signs are different, the result is negative</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;        }</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;        <span class="keywordflow">if</span>( ss2&lt;0 )</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;            ss2 = -ss2;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a096173e99072ed2ef2dc52071c6b4b7a">MulUInt</a>( <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(ss2) );</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;    }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="comment">        this method checks whether a table pointed by &#39;tab&#39; and &#39;len&#39;</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="comment">        has the value 0.5 decimal</span></div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment">        (it is treated as the comma operator would be before the highest bit)</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="comment">        call this method only if the highest bit is set - you have to test it beforehand</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="comment">        return:</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="comment">        -  true  - tab was equal the half (0.5 decimal)</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="comment">        -  false - tab was greater than a half (greater than 0.5 decimal)</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;    <span class="keywordtype">bool</span> CheckGreaterOrEqualHalf(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> * tab, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> len)</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;    {</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;        TTMATH_ASSERT( len&gt;0 &amp;&amp; (tab[len-1] &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>)!=0 )</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;        for(i=0 ; i&lt;len-1 ; ++i)</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;            if( tab[i] != 0 )</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;                return false;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;        if( tab[i] != <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a> )</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;            return false;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;    return true;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;    }</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;private:</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="comment">        multiplication this = this * ss2</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment">        this method returns a carry</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> MulRef(const <a class="code" href="classttmath_1_1_big.html">Big</a>&lt;exp, man&gt; &amp; ss2, <span class="keywordtype">bool</span> round = true)</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;    {</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;    <a class="code" href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a>( ss2 )</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man*2&gt;</a> man_result;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.IsNan() )</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;        <span class="keywordflow">if</span>( ss2.IsZero() )</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;        {</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;        }</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;        <span class="comment">// man_result = mantissa * ss2.mantissa</span></div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#ac655c4d3a5ec23052292ccf3a058a6f1">MulBig</a>(ss2.mantissa, man_result);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;        <span class="comment">// &#39;i&#39; will be from 0 to man*TTMATH_BITS_PER_UINT</span></div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;        <span class="comment">// because mantissa and ss2.mantissa are standardized </span></div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;        <span class="comment">// (the highest bit in man_result is set to 1 or</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;        <span class="comment">// if there is a zero value in man_result the method CompensationToLeft()</span></div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;        <span class="comment">// returns 0 but we&#39;ll correct this at the end in Standardizing() method)</span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;        i = man_result.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> exp_add = man * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - i;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        <span class="keywordflow">if</span>( exp_add )</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;            c += exponent.<a class="code" href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">Add</a>( exp_add );</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;        c += exponent.<a class="code" href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">Add</a>( ss2.exponent );</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;        <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i+man];</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;        <span class="keywordflow">if</span>( round &amp;&amp; (man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>) != 0 )</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;        {</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;            <span class="keywordtype">bool</span> is_half = CheckGreaterOrEqualHalf(man_result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>, man);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;            c += RoundHalfToEven(is_half);      </div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;        }</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() == ss2.IsSign() )</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;        {</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;            <span class="comment">// the signs are the same, the result is positive</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>();</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;        }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;        {</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;            <span class="comment">// the signs are different, the result is negative</span></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;            <span class="comment">// if the value is zero it will be corrected later in Standardizing method</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;        }</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;    }</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;    </div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment">        multiplication this = this * ss2</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment">        this method returns a carry</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01373"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47"> 1373</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2, <span class="keywordtype">bool</span> round = <span class="keyword">true</span>)</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;    {</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;        <span class="keywordflow">if</span>( <span class="keyword">this</span> == &amp;ss2 )</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;        {</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;            <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> copy_ss2(ss2);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;            <span class="keywordflow">return</span> MulRef(copy_ss2, round);</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;        }</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;        {</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;            <span class="keywordflow">return</span> MulRef(ss2, round);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;        }</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;    }</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment">        division this = this / ss2</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment">        return value:</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="comment">        -  1 - carry (in a division carry can be as well)</span></div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="comment">        -  2 - improper argument (ss2 is zero)</span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> DivRef(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2, <span class="keywordtype">bool</span> round = <span class="keyword">true</span>)</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;    {</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;    <a class="code" href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a>( ss2 )</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;    <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man*2&gt;</a> man1;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;    <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man*2&gt;</a> man2;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i,c = 0;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;        </div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;        {</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;        }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;        <span class="comment">// !! this two loops can be joined together</span></div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;        <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        {</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;            man1.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i+man] = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i];</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;            man2.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i]     = ss2.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i];</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;        }</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;        <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;        {</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;            man1.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = 0;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;            man2.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i+man] = 0;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;        }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;        man1.<a class="code" href="classttmath_1_1_u_int.html#a66ed2921ae082f9694afb330ec67d05d">Div</a>(man2);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;        i = man1.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;        <span class="keywordflow">if</span>( i )</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;            c += exponent.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>(i);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;        c += exponent.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>(ss2.exponent);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;        </div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;        <span class="keywordflow">for</span>(i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = man1.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i+man];</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;        <span class="keywordflow">if</span>( round &amp;&amp; (man1.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>) != 0 )</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;        {</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;            <span class="keywordtype">bool</span> is_half = CheckGreaterOrEqualHalf(man1.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>, man);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;            c += RoundHalfToEven(is_half);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;        }</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() == ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>();</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>(); <span class="comment">// if there is a zero it will be corrected in Standardizing()</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;    }</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;<span class="comment">        division this = this / ss2</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment">        return value:</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment">        -  1 - carry (in a division carry can be as well)</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment">        -  2 - improper argument (ss2 is zero)</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64"> 1470</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2, <span class="keywordtype">bool</span> round = <span class="keyword">true</span>)</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    {</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;        <span class="keywordflow">if</span>( <span class="keyword">this</span> == &amp;ss2 )</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;        {</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;            <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> copy_ss2(ss2);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;            <span class="keywordflow">return</span> DivRef(copy_ss2, round);</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;        }</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;        {</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;            <span class="keywordflow">return</span> DivRef(ss2, round);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;        }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;    }</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;<span class="comment">        the remainder from a division</span></div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ModRef(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2)</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;    <a class="code" href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a>( ss2 )</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || ss2.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;        {</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;        }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;        <span class="keywordflow">if</span>( !<a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(ss2) )</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;        {</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;            Big&lt;exp, man&gt; temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;            c = temp.Div(ss2);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;            temp.SkipFraction();</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;            c += temp.Mul(ss2);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;            c += <a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>(temp);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;            <span class="keywordflow">if</span>( !<a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>( ss2 ) )</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;                c += 1;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;        }</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;    }</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;<span class="comment">        caltulate the remainder from a division</span></div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="comment">        samples</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment">        -   12.6 mod  3 =  0.6   because  12.6 = 3*4 + 0.6</span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="comment">        -  -12.6 mod  3 = -0.6   bacause -12.6 = 3*(-4) + (-0.6)</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<span class="comment">        -   12.6 mod -3 =  0.6</span></div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;<span class="comment">        -  -12.6 mod -3 = -0.6</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;<span class="comment">        in other words: this(old) = ss2 * q + this(new)</span></div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="comment">        return value:</span></div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment">        -  2 - improper argument (ss2 is zero)</span></div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01539"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#abdd4b5bd37f010f2c3dc6e770827693d"> 1539</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#abdd4b5bd37f010f2c3dc6e770827693d">Mod</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; ss2)</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;    {</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;        <span class="keywordflow">if</span>( <span class="keyword">this</span> == &amp;ss2 )</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;        {</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;            <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> copy_ss2(ss2);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;            <span class="keywordflow">return</span> ModRef(copy_ss2);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;        }</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;        {</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;            <span class="keywordflow">return</span> ModRef(ss2);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;        }</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;    }</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="comment">        this method returns: &#39;this&#39; mod 2</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="comment">        (either zero or one)</span></div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="comment">        this method is much faster than using Mod( object_with_value_two )</span></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01559"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ab60bb059c684494fd91bb9d257ebd9c6"> 1559</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ab60bb059c684494fd91bb9d257ebd9c6">Mod2</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;        <span class="keywordflow">if</span>( exponent&gt;<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(0) || exponent&lt;=-<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> exp_int = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;        <span class="comment">// &#39;exp_int&#39; is negative (or zero), we set it as positive</span></div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;        exp_int = -exp_int;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    <span class="keywordflow">return</span> mantissa.<a class="code" href="classttmath_1_1_u_int.html#a9cee17c474838e4d58d55e4c8524fdb7">GetBit</a>(exp_int);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    }</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="comment">        power this = this ^ pow</span></div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;<span class="comment">        (pow without a sign)</span></div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="comment">        binary algorithm (r-to-l)</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="comment">        -  2 - incorrect arguments (0^0)</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> pow_size&gt;</div><div class="line"><a name="l01584"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a04e13b29e821c17842c19e6fa8339037"> 1584</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a04e13b29e821c17842c19e6fa8339037">Pow</a>(<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;pow_size&gt;</a> pow)</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;    {</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;        {</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() )</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;            {</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;                <span class="comment">// we don&#39;t define zero^zero</span></div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;                <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;                <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;            }</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;            <span class="comment">// 0^(+something) is zero</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;        }</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> start(*<span class="keyword">this</span>);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> result;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;        result.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;        <span class="keywordflow">while</span>( !c )</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;        {</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[0] &amp; 1 )</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;                c += result.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(start);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;            pow.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>(1);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() )</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;            c += start.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(start);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;        }</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;        *<span class="keyword">this</span> = result;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;    }</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;<span class="comment">        power this = this ^ pow</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;<span class="comment">        p can be negative</span></div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment">        -  2 - incorrect arguments 0^0 or 0^(-something)</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> pow_size&gt;</div><div class="line"><a name="l01636"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acd54dedacff08e88e214eaf37cef7bd7"> 1636</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acd54dedacff08e88e214eaf37cef7bd7">Pow</a>(<a class="code" href="classttmath_1_1_int.html">Int&lt;pow_size&gt;</a> pow)</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;    {</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;        <span class="keywordflow">if</span>( !pow.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a04e13b29e821c17842c19e6fa8339037">Pow</a>( <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;pow_size&gt;</a>(pow) );</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;        {</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;            <span class="comment">// if &#39;p&#39; is negative then</span></div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;            <span class="comment">// &#39;this&#39; must be different from zero</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;        }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = pow.<a class="code" href="classttmath_1_1_int.html#a1459d8f91899c87e26a59ccbf9ed3f00">ChangeSign</a>();</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> t(*<span class="keyword">this</span>);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;        c += t.<a class="code" href="classttmath_1_1_big.html#a04e13b29e821c17842c19e6fa8339037">Pow</a>( <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;pow_size&gt;</a>(pow) ); <span class="comment">// here can only be a carry (return:1)</span></div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(t);</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;    }</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment">        power this = this ^ abs([pow])</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment">        pow is treated as a value without a sign and without a fraction</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;<span class="comment">         if pow has a sign then the method pow.Abs() is used</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;<span class="comment">         if pow has a fraction the fraction is skipped (not used in calculation)</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="comment">        -  2 - incorrect arguments (0^0)</span></div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f"> 1675</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f">PowUInt</a>(<a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> pow)</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;    {</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || pow.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;        {</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;            {</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;                <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;                <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;            }</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;            <span class="comment">// 0^(+something) is zero</span></div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;        }</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;        <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;            pow.<a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>();</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> start(*<span class="keyword">this</span>);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> result;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> one;</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;        one.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;        result = one;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;        <span class="keywordflow">while</span>( !c )</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;        {</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_big.html#ab60bb059c684494fd91bb9d257ebd9c6">Mod2</a>() )</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;                c += result.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(start);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;            c += pow.exponent.<a class="code" href="classttmath_1_1_int.html#ab46339e71ac07f2c8717fcfb3e6f20e7">SubOne</a>();</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;            <span class="keywordflow">if</span>( pow &lt; one )</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;            c += start.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(start);</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;        }</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;        *<span class="keyword">this</span> = result;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;    }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment">        power this = this ^ [pow]</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="comment">        pow is treated as a value without a fraction</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="comment">        pow can be negative</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="comment">        -  2 - incorrect arguments 0^0 or 0^(-something)</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01731"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a52ea0acdfd8b1ea83073d18aec855a0e"> 1731</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a52ea0acdfd8b1ea83073d18aec855a0e">PowInt</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; pow)</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;    {</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || pow.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;        <span class="keywordflow">if</span>( !pow.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f">PowUInt</a>(pow);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;        {</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;            <span class="comment">// if &#39;pow&#39; is negative then</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;            <span class="comment">// &#39;this&#39; must be different from zero</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;        }</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = temp.<a class="code" href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f">PowUInt</a>(pow); <span class="comment">// here can only be a carry (result:1)</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(temp);</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;    }</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="comment">        power this = this ^ pow</span></div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;<span class="comment">        this must be greater than zero (this &gt; 0)</span></div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="comment">        pow can be negative and with fraction</span></div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="comment">        -  2 - incorrect argument (&#39;this&#39; &lt;= 0)</span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01767"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a0963350876a5d4b23e9c6f1e021cfa2c"> 1767</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a0963350876a5d4b23e9c6f1e021cfa2c">PowFrac</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; pow)</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;    {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || pow.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> temp;</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = temp.<a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(*<span class="keyword">this</span>);</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;        <span class="keywordflow">if</span>( c != 0 ) <span class="comment">// can be 2 from Ln()</span></div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;        {</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;            <span class="keywordflow">return</span> c;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;        }</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;        c += temp.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(pow);</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a2c2c7de54743b12c05f1bfea7b153eba">Exp</a>(temp);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;    }</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="comment">        power this = this ^ pow</span></div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment">        pow can be negative and with fraction</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment">        -  2 - incorrect argument (&#39;this&#39; or &#39;pow&#39;)</span></div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01797"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5143613c33850b40170b9d5b5c08c5f3"> 1797</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a5143613c33850b40170b9d5b5c08c5f3">Pow</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; pow)</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;    {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || pow.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;        {</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;            <span class="comment">// 0^pow will be 0 only for pow&gt;0</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || pow.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;            {</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;                <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;                <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;            }</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;        }</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;        <span class="keywordflow">if</span>( pow.exponent&gt;-<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) &amp;&amp; pow.exponent&lt;=0 )</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;        {</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;            <span class="keywordflow">if</span>( pow.<a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>() )</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a52ea0acdfd8b1ea83073d18aec855a0e">PowInt</a>( pow );</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;        }</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0963350876a5d4b23e9c6f1e021cfa2c">PowFrac</a>(pow);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;    }</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;<span class="comment">        this function calculates the square root</span></div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;<span class="comment">        e.g. let this=9 then this.Sqrt() gives 3</span></div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;<span class="comment">        return:</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;<span class="comment">        -  0 - ok</span></div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;<span class="comment">        -  1 - carry</span></div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;<span class="comment">        -  2 - improper argument (this&lt;0 or NaN)</span></div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01835"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a6a2dbb9846bbebd87393f2ea8f75911d"> 1835</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a6a2dbb9846bbebd87393f2ea8f75911d">Sqrt</a>()</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;    {</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;        {</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;        }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> old(*<span class="keyword">this</span>);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> ln;</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;        <span class="comment">// we&#39;re using the formula: sqrt(x) = e ^ (ln(x) / 2)</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;        c += ln.<a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(*<span class="keyword">this</span>);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;        c += ln.exponent.<a class="code" href="classttmath_1_1_int.html#ab46339e71ac07f2c8717fcfb3e6f20e7">SubOne</a>(); <span class="comment">// ln = ln / 2</span></div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a2c2c7de54743b12c05f1bfea7b153eba">Exp</a>(ln);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;        <span class="comment">// above formula doesn&#39;t give accurate results for some integers</span></div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;        <span class="comment">// e.g. Sqrt(81) would not be 9 but a value very closed to 9</span></div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;        <span class="comment">// we&#39;re rounding the result, calculating result*result and comparing</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;        <span class="comment">// with the old value, if they are equal then the result is an integer too</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;        <span class="keywordflow">if</span>( !c &amp;&amp; old.<a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>() &amp;&amp; !<a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>() )</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;        {</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;            <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;            c += temp.<a class="code" href="classttmath_1_1_big.html#a01fd17a7bc3beda037834bb954460295">Round</a>();</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;            <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> temp2(temp);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;            c += temp.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(temp2);</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;            <span class="keywordflow">if</span>( temp == old )</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;                *<span class="keyword">this</span> = temp2;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;        }</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;    }</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;<span class="preprocessor">#ifdef TTMATH_CONSTANTSGENERATOR</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;<span class="comment">        Exponent this = exp(x) = e^x where x is in (-1,1)</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;<span class="comment">        we&#39;re using the formula exp(x) = 1 + (x)/(1!) + (x^2)/(2!) + (x^3)/(3!) + ...</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;    <span class="keywordtype">void</span> ExpSurrounding0(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; x, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> * steps = 0)</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    {</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;        <a class="code" href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a>( x )</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> denominator, denominator_i;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> one, old_value, next_part;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> numerator = x;</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;        </div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;        one.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;        denominator.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;        denominator_i.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;        old_value = *<span class="keyword">this</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;        <span class="comment">// we begin from 1 in order to not test at the beginning</span></div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;<span class="preprocessor">    #ifdef TTMATH_CONSTANTSGENERATOR</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;        <span class="keywordflow">for</span>(i=1 ; true ; ++i)</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;    #<span class="keywordflow">else</span></div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;        <span class="keywordflow">for</span>(i=1 ; i&lt;=<a class="code" href="ttmathtypes_8h.html#a3a26c74e34f27589bfceefd0f2e497a8">TTMATH_ARITHMETIC_MAX_LOOP</a> ; ++i)</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;    #endif</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;        {</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;            <span class="keywordtype">bool</span> testing = ((i &amp; 3) == 0); <span class="comment">// it means &#39;(i % 4) == 0&#39;</span></div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;            next_part = numerator;</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;            <span class="keywordflow">if</span>( next_part.<a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>( denominator ) )</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;                <span class="comment">// if there is a carry here we only break the loop </span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;                <span class="comment">// however the result we return as good</span></div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;                <span class="comment">// it means there are too many parts of the formula</span></div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;            <span class="comment">// there shouldn&#39;t be a carry here</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;            <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>( next_part );</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;            <span class="keywordflow">if</span>( testing )</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;            {</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;                <span class="keywordflow">if</span>( old_value == *<span class="keyword">this</span> )</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;                    <span class="comment">// we&#39;ve added next few parts of the formula but the result</span></div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;                    <span class="comment">// is still the same then we break the loop</span></div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;                    old_value = *<span class="keyword">this</span>;</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;            }</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;            <span class="comment">// we set the denominator and the numerator for a next part of the formula</span></div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;            <span class="keywordflow">if</span>( denominator_i.<a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(one) )</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;                <span class="comment">// if there is a carry here the result we return as good</span></div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;            <span class="keywordflow">if</span>( denominator.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(denominator_i) )</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;            <span class="keywordflow">if</span>( numerator.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(x) )</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;        }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;        <span class="keywordflow">if</span>( steps )</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;            *steps = i;</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;    }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment">        Exponent this = exp(x) = e^x</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment">        we&#39;re using the fact that our value is stored in form of:</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment">            x = mantissa * 2^exponent</span></div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="comment">        then</span></div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;<span class="comment">            e^x = e^(mantissa* 2^exponent) or</span></div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;<span class="comment">            e^x = (e^mantissa)^(2^exponent)</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;<span class="comment">        &#39;Exp&#39; returns a carry if we can&#39;t count the result (&#39;x&#39; is too big)</span></div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l01966"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a2c2c7de54743b12c05f1bfea7b153eba"> 1966</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a2c2c7de54743b12c05f1bfea7b153eba">Exp</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; x)</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;    {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;        </div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;        {</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;        }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;        <span class="comment">// m will be the value of the mantissa in range (-1,1)</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> m(x);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;        m.exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;        <span class="comment">// &#39;e_&#39; will be the value of &#39;2^exponent&#39;</span></div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;        <span class="comment">//   e_.mantissa.table[man-1] = TTMATH_UINT_HIGHEST_BIT;  and</span></div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;        <span class="comment">//   e_.exponent.Add(1) mean:</span></div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;        <span class="comment">//     e_.mantissa.table[0] = 1;</span></div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;        <span class="comment">//     e_.Standardizing();</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;        <span class="comment">//     e_.exponent.Add(man*TTMATH_BITS_PER_UINT)</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;        <span class="comment">//     (we must add &#39;man*TTMATH_BITS_PER_UINT&#39; because we&#39;ve taken it from the mantissa)</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> e_(x);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;        e_.mantissa.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;        e_.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>;</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;        c += e_.exponent.<a class="code" href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">Add</a>(1);</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;        e_.<a class="code" href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">Abs</a>();</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;        <span class="comment">/*</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="comment">            now we&#39;ve got:</span></div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;<span class="comment">            m - the value of the mantissa in range (-1,1)</span></div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;<span class="comment">            e_ - 2^exponent</span></div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;<span class="comment">            e_ can be as:</span></div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;<span class="comment">            ...2^-2, 2^-1, 2^0, 2^1, 2^2 ...</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="comment">            ...1/4 , 1/2 , 1  , 2  , 4   ...</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;<span class="comment">            above one e_ is integer</span></div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;<span class="comment">            if e_ is greater than 1 we calculate the exponent as:</span></div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;<span class="comment">                e^(m * e_) = ExpSurrounding0(m) ^ e_</span></div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="comment">            and if e_ is smaller or equal one we calculate the exponent in this way:</span></div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;<span class="comment">                e^(m * e_) = ExpSurrounding0(m* e_)</span></div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;<span class="comment">            because if e_ is smaller or equal 1 then the product of m*e_ is smaller or equal m</span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="comment">        */</span></div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;        <span class="keywordflow">if</span>( e_ &lt;= 1 )</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;        {</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;            m.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(e_);</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;            ExpSurrounding0(m);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;        }</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;        {</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;            ExpSurrounding0(m);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;            c += <a class="code" href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f">PowUInt</a>(e_);</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;        }</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;    </div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;    }</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="preprocessor">#ifdef TTMATH_CONSTANTSGENERATOR</span></div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;<span class="comment">        Natural logarithm this = ln(x) where x in range &lt;1,2)</span></div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;<span class="comment">        we&#39;re using the formula:</span></div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;<span class="comment">        ln x = 2 * [ (x-1)/(x+1) + (1/3)((x-1)/(x+1))^3 + (1/5)((x-1)/(x+1))^5 + ... ]</span></div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;    <span class="keywordtype">void</span> LnSurrounding1(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; x, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> * steps = 0)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;    {</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> old_value, next_part, denominator, one, two, x1(x), x2(x);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;        one.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;        <span class="keywordflow">if</span>( x == one )</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;        {</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;            <span class="comment">// LnSurrounding1(1) is 0</span></div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;        }</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;        two = 2;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;        x1.<a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>(one);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;        x2.Add(one);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;        x1.Div(x2);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;        x2 = x1;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;        x2.Mul(x1);</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;        denominator.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;        old_value = *<span class="keyword">this</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;<span class="preprocessor">    #ifdef TTMATH_CONSTANTSGENERATOR</span></div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;        <span class="keywordflow">for</span>(i=1 ; true ; ++i)</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;    #<span class="keywordflow">else</span></div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;        <span class="comment">// we begin from 1 in order to not test at the beginning</span></div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;        <span class="keywordflow">for</span>(i=1 ; i&lt;=<a class="code" href="ttmathtypes_8h.html#a3a26c74e34f27589bfceefd0f2e497a8">TTMATH_ARITHMETIC_MAX_LOOP</a> ; ++i)</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;    #endif</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;        {</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;            <span class="keywordtype">bool</span> testing = ((i &amp; 3) == 0); <span class="comment">// it means &#39;(i % 4) == 0&#39;</span></div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;            next_part = x1;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;            <span class="keywordflow">if</span>( next_part.<a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(denominator) )</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;                <span class="comment">// if there is a carry here we only break the loop </span></div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;                <span class="comment">// however the result we return as good</span></div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;                <span class="comment">// it means there are too many parts of the formula</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;            <span class="comment">// there shouldn&#39;t be a carry here</span></div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;            <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(next_part);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;            <span class="keywordflow">if</span>( testing )</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;            {</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;                <span class="keywordflow">if</span>( old_value == *<span class="keyword">this</span> )</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;                    <span class="comment">// we&#39;ve added next (step_test) parts of the formula but the result</span></div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;                    <span class="comment">// is still the same then we break the loop</span></div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;                    old_value = *<span class="keyword">this</span>;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;            }</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;            <span class="keywordflow">if</span>( x1.Mul(x2) )</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;                <span class="comment">// if there is a carry here the result we return as good</span></div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;            <span class="keywordflow">if</span>( denominator.<a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(two) )</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;        }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;        <span class="comment">// this = this * 2</span></div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;        <span class="comment">// ( there can&#39;t be a carry here because we calculate the logarithm between &lt;1,2) )</span></div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;        exponent.<a class="code" href="classttmath_1_1_int.html#abdf555b866fd8a2e9bcadde81e253053">AddOne</a>();</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;        <span class="keywordflow">if</span>( steps )</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;            *steps = i;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;    }</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="comment">        Natural logarithm this = ln(x)</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;<span class="comment">        (a logarithm with the base equal &#39;e&#39;)</span></div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;<span class="comment">        we&#39;re using the fact that our value is stored in form of:</span></div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;<span class="comment">            x = mantissa * 2^exponent</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;<span class="comment">        then</span></div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;<span class="comment">            ln(x) = ln (mantissa * 2^exponent) = ln (mantissa) + (exponent * ln (2))</span></div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="comment">        the mantissa we&#39;ll show as a value from range &lt;1,2) because the logarithm</span></div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;<span class="comment">        is decreasing too fast when &#39;x&#39; is going to 0</span></div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;<span class="comment">        -   0 - ok</span></div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;<span class="comment">        -   1 - overflow (carry)</span></div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="comment">        -   2 - incorrect argument (x&lt;=0)</span></div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02144"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c"> 2144</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; x)</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;    {</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || x.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;        {</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;        }</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> exponent_temp;</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;        exponent_temp.<a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>( x.exponent );</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;        <span class="comment">// m will be the value of the mantissa in range &lt;1,2)</span></div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> m(x);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;        m.exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - 1);</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;        <span class="comment">// we must add &#39;man*TTMATH_BITS_PER_UINT-1&#39; because we&#39;ve taken it from the mantissa</span></div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = exponent_temp.<a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>-1);</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;        LnSurrounding1(m);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> ln2;</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;        ln2.<a class="code" href="classttmath_1_1_big.html#ac34df29b0b14bee8687eefc07b8698af">SetLn2</a>();</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;        c += exponent_temp.<a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(ln2);</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(exponent_temp);</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;    }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;<span class="comment">        Logarithm from &#39;x&#39; with a &#39;base&#39;</span></div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;<span class="comment">        we&#39;re using the formula:</span></div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="comment">            Log(x) with &#39;base&#39; = ln(x) / ln(base)</span></div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="comment">        return values:</span></div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;<span class="comment">        -   0 - ok</span></div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;<span class="comment">        -   1 - overflow</span></div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;<span class="comment">        -   2 - incorrect argument (x&lt;=0)</span></div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;<span class="comment">        -   3 - incorrect base (a&lt;=0 or a=1)</span></div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02189"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a6a50f7bec2c05935c06bbe1dd43fa4ac"> 2189</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a6a50f7bec2c05935c06bbe1dd43fa4ac">Log</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; x, <span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; base)</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;    {</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || base.<a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(1);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;        <span class="keywordflow">if</span>( x.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || x.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;        {</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;            <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;        }</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> denominator;;</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;        denominator.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;        <span class="keywordflow">if</span>( base.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() || base.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() || base==denominator )</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;        {</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;            <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;        }</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;        </div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;        <span class="keywordflow">if</span>( x == denominator ) <span class="comment">// (this is: if x == 1)</span></div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;        {</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;            <span class="comment">// log(1) is 0</span></div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;        }</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;        <span class="comment">// another error values we&#39;ve tested at the beginning</span></div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;        <span class="comment">// there can only be a carry</span></div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(x);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;        c += denominator.<a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(base);</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(denominator);</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;    }</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;<span class="comment">    *   converting methods</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;<span class="comment">        converting from another type of a Big object</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> another_exp, u<span class="keywordtype">int</span> another_man&gt;</div><div class="line"><a name="l02240"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a961c89a45552dfac6d4a47e6e6d21106"> 2240</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a961c89a45552dfac6d4a47e6e6d21106">FromBig</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;another_exp, another_man&gt;</a> &amp; another)</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;    {</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;        info = another.info;</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;        <span class="keywordflow">if</span>( exponent.<a class="code" href="classttmath_1_1_int.html#a9114adb3f73a64079005a5deaaf08d8f">FromInt</a>(another.exponent) )</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;        {</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;        }</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> man_len_min = (man &lt; another_man)? man : another_man;</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;        <span class="keywordflow">for</span>( i = 0 ; i&lt;man_len_min ; ++i )</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1-i] = another.mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[another_man-1-i];</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;    </div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;        <span class="keywordflow">for</span>( ; i&lt;man ; ++i )</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1-i] = 0;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;        <span class="comment">// MS Visual Express 2005 reports a warning (in the lines with &#39;uint man_diff = ...&#39;):</span></div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;        <span class="comment">// warning C4307: &#39;*&#39; : integral constant overflow</span></div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;        <span class="comment">// but we&#39;re using &#39;if( man &gt; another_man )&#39; and &#39;if( man &lt; another_man )&#39; and there&#39;ll be no such situation here</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;<span class="preprocessor">        #ifdef _MSC_VER</span></div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;<span class="preprocessor">        #pragma warning( disable: 4307 )</span></div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;<span class="preprocessor">        #endif</span></div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;        <span class="keywordflow">if</span>( man &gt; another_man )</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;        {</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> man_diff = (man - another_man) * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;            c += exponent.<a class="code" href="classttmath_1_1_int.html#a9d5f89116e1ea6c624978e7905823a80">SubInt</a>(man_diff, 0);</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;        }</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;        <span class="keywordflow">if</span>( man &lt; another_man )</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;        {</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> man_diff = (another_man - man) * <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;            c += exponent.<a class="code" href="classttmath_1_1_int.html#a1988d656495b09a5d357cb42f080baf5">AddInt</a>(man_diff, 0);</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;        }</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;        </div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;<span class="preprocessor">        #ifdef _MSC_VER</span></div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;<span class="preprocessor">        #pragma warning( default: 4307 )</span></div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="preprocessor">        #endif</span></div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;        <span class="comment">// mantissa doesn&#39;t have to be standardized (either the highest bit is set or all bits are equal zero)</span></div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;        CorrectZero();</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;    }</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;<span class="comment">        an auxiliary method for converting &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToUIntOrInt(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;        result = 0;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> maxbit = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;        <span class="keywordflow">if</span>( exponent &gt; maxbit + <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;            <span class="comment">// if exponent &gt; (maxbit + sint(TTMATH_BITS_PER_UINT)) the value can&#39;t be passed</span></div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;            <span class="comment">// into the &#39;sint&#39; type (it&#39;s too big)</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= maxbit )</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;            <span class="comment">// our value is from the range of (-1,1) and we return zero</span></div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;        <span class="comment">// exponent is from a range of (maxbit, maxbit + sint(TTMATH_BITS_PER_UINT) &gt;</span></div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;        <span class="comment">// and [maxbit + sint(TTMATH_BITS_PER_UINT] &lt;= 0</span></div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> how_many_bits = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;        <span class="comment">// how_many_bits is negative, we&#39;ll make it positive</span></div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;        how_many_bits = -how_many_bits;</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;    </div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;        result = (mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] &gt;&gt; (how_many_bits % <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>));</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;    }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;<span class="comment">        this method converts &#39;this&#39; into uint</span></div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02336"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14"> 2336</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> result;</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result);</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;    }</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02351"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a208511aaeacc80803434f80669fde9a9"> 2351</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a208511aaeacc80803434f80669fde9a9">ToUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;        <span class="keywordflow">if</span>( ToUIntOrInt(result) )</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;    }</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;<span class="comment">        this method converts &#39;this&#39; into sint</span></div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02366"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02"> 2366</a></span>&#160;    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> result;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>(result);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;    }</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02381"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a033eede8a51437c3d595ef7cab8aac32"> 2381</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a033eede8a51437c3d595ef7cab8aac32">ToInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result);</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;    }</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02392"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a694c79746d5e9ff547b7b507b7a0a82d"> 2392</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a694c79746d5e9ff547b7b507b7a0a82d">ToInt</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> result_uint;</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = ToUIntOrInt(result_uint);</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;        result = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(result_uint);</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;        <span class="keywordflow">if</span>( c )</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mask = 0;</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;        {</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;            mask = <a class="code" href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a>;</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160;            result = -result;</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;        }</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;    <span class="keywordflow">return</span> ((result &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>) == (mask &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>)) ? 0 : 1;</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;    }</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;<span class="comment">        an auxiliary method for converting &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToUIntOrInt(<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;        result.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;        </div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> maxbit = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;        <span class="keywordflow">if</span>( exponent &gt; maxbit + <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(int_size*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;            <span class="comment">// if exponent &gt; (maxbit + sint(int_size*TTMATH_BITS_PER_UINT)) the value can&#39;t be passed</span></div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;            <span class="comment">// into the &#39;UInt&lt;int_size&gt;&#39; type (it&#39;s too big)</span></div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= maxbit )</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;            <span class="comment">// our value is from range (-1,1) and we return zero</span></div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> how_many_bits = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;        <span class="keywordflow">if</span>( how_many_bits &lt; 0 )</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;        {</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;            how_many_bits = -how_many_bits;</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> index    = how_many_bits / <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;            <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;man&gt;</a> mantissa_temp(mantissa);</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;            mantissa_temp.Rcr( how_many_bits % <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>, 0 );</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;            <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=index, a=0 ; i&lt;man ; ++i,++a)</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;                result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[a] = mantissa_temp.table[i];</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;        }</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;        {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> index = how_many_bits / <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;            <span class="keywordflow">if</span>( index + (man-1) &lt; int_size )</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;            {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;                <span class="comment">// above &#39;if&#39; is always true</span></div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;                <span class="comment">// this is only to get rid of a warning &quot;warning: array subscript is above array bounds&quot;</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;                <span class="comment">// (from gcc)</span></div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;                <span class="comment">// we checked the condition there: &quot;if( exponent &gt; maxbit + sint(int_size*TTMATH_BITS_PER_UINT) )&quot;</span></div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;                <span class="comment">// but gcc doesn&#39;t understand our types - exponent is Int&lt;&gt;</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;                <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=0 ; i&lt;man ; ++i)</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;                    result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[index+i] = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i];</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;            }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;            result.<a class="code" href="classttmath_1_1_u_int.html#abbcc02c03802229412f902de309bad7d">Rcl</a>( how_many_bits % <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>, 0 );</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;        }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;    }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l02484"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ad0996b6cc3bd87251ec2d946c7ec606a"> 2484</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ad0996b6cc3bd87251ec2d946c7ec606a">ToUInt</a>(<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = ToUIntOrInt(result);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;        <span class="keywordflow">if</span>( c )</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;    }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l02504"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a7825c0764bf6b746be5f0775dc704f54"> 2504</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a7825c0764bf6b746be5f0775dc704f54">ToInt</a>(<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result);</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;    }</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39;</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l02516"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ab832ccd3ae1bceb85699542f441fa6ba"> 2516</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ab832ccd3ae1bceb85699542f441fa6ba">ToInt</a>(<a class="code" href="classttmath_1_1_int.html">Int&lt;int_size&gt;</a> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = ToUIntOrInt(result);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;        <span class="keywordflow">if</span>( c )</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mask = 0;</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;        {</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;            result.<a class="code" href="classttmath_1_1_int.html#a1459d8f91899c87e26a59ccbf9ed3f00">ChangeSign</a>();</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;            mask = <a class="code" href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a>;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;        }</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;    <span class="keywordflow">return</span> ((result.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[int_size-1] &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>) == (mask &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>))? 0 : 1;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;    }</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;<span class="comment">        a method for converting &#39;uint&#39; to this class</span></div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02538"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5"> 2538</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> value)</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;    {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;        <span class="keywordflow">if</span>( value == 0 )</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;        {</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;        }</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;        info = 0;</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;        <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=0 ; i&lt;man-1 ; ++i)</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = 0;</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = value;</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;        exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man-1) * <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;        <span class="comment">// there shouldn&#39;t be a carry because &#39;value&#39; has the &#39;uint&#39; type </span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;        <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;    }</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;<span class="comment">        a method for converting &#39;uint&#39; to this class</span></div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02564"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3"> 2564</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> value)</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;    {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;    }</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;<span class="comment">        a method for converting &#39;sint&#39; to this class</span></div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02573"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a8757d0e23a961f99ce15fa6e844bc526"> 2573</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a8757d0e23a961f99ce15fa6e844bc526">FromInt</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> value)</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;    {</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;    <span class="keywordtype">bool</span> is_sign = <span class="keyword">false</span>;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;        <span class="keywordflow">if</span>( value &lt; 0 )</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;        {</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;            value   = -value;</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;            is_sign = <span class="keyword">true</span>;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;        }</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value));</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;    }</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;<span class="comment">        this method converts from standard double into this class</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;<span class="comment">        standard double means IEEE-754 floating point value with 64 bits</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="comment">        it is as follows (from http://www.psc.edu/general/software/packages/ieee/ieee.html):</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;<span class="comment">        The IEEE double precision floating point standard representation requires</span></div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;<span class="comment">        a 64 bit word, which may be represented as numbered from 0 to 63, left to</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="comment">        right. The first bit is the sign bit, S, the next eleven bits are the</span></div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;<span class="comment">        exponent bits, &#39;E&#39;, and the final 52 bits are the fraction &#39;F&#39;:</span></div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;<span class="comment">            S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</span></div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;<span class="comment">            0 1        11 12                                                63</span></div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;<span class="comment">        The value V represented by the word may be determined as follows:</span></div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;<span class="comment">        - If E=2047 and F is nonzero, then V=NaN (&quot;Not a number&quot;)</span></div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;<span class="comment">        - If E=2047 and F is zero and S is 1, then V=-Infinity</span></div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;<span class="comment">        - If E=2047 and F is zero and S is 0, then V=Infinity</span></div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;<span class="comment">        - If 0&lt;E&lt;2047 then V=(-1)**S * 2 ** (E-1023) * (1.F) where &quot;1.F&quot; is intended</span></div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;<span class="comment">          to represent the binary number created by prefixing F with an implicit</span></div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;<span class="comment">          leading 1 and a binary point.</span></div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;<span class="comment">        - If E=0 and F is nonzero, then V=(-1)**S * 2 ** (-1022) * (0.F) These are</span></div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;<span class="comment">          &quot;unnormalized&quot; values.</span></div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;<span class="comment">        - If E=0 and F is zero and S is 1, then V=-0</span></div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;<span class="comment">        - If E=0 and F is zero and S is 0, then V=0</span></div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;<span class="preprocessor">#ifdef TTMATH_PLATFORM32</span></div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">FromDouble</a>(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;    {</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;        <span class="comment">// I am not sure what will be on a platform which has </span></div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;        <span class="comment">// a different endianness... but we use this library only</span></div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;        <span class="comment">// on x86 and amd (intel) 64 bits (as there&#39;s a lot of assembler code)</span></div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;        <span class="keyword">union </span></div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;        {</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;            <span class="keywordtype">double</span> d;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> u[2]; <span class="comment">// two 32bit words</span></div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160;        } temp;</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;        temp.d = value;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e  = ( temp.u[1] &amp; 0x7FF00000u) &gt;&gt; 20;</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m1 = ((temp.u[1] &amp;    0xFFFFFu) &lt;&lt; 11) | (temp.u[0] &gt;&gt; 21);</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m2 = temp.u[0] &lt;&lt; 11;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160;        </div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;        <span class="keywordflow">if</span>( e == 2047 )</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;        {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160;            <span class="comment">// If E=2047 and F is nonzero, then V=NaN (&quot;Not a number&quot;)</span></div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;            <span class="comment">// If E=2047 and F is zero and S is 1, then V=-Infinity</span></div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;            <span class="comment">// If E=2047 and F is zero and S is 0, then V=Infinity</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;            <span class="comment">// we do not support -Infinity and +Infinity</span></div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;            <span class="comment">// we assume that there is always NaN </span></div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160;</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;        }</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;        <span class="keywordflow">if</span>( e &gt; 0 )</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160;        {</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160;            <span class="comment">// If 0&lt;E&lt;2047 then</span></div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;            <span class="comment">// V=(-1)**S * 2 ** (E-1023) * (1.F)</span></div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;            <span class="comment">// where &quot;1.F&quot; is intended to represent the binary number</span></div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;            <span class="comment">// created by prefixing F with an implicit leading 1 and a binary point.</span></div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;            </div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;            FromDouble_SetExpAndMan((temp.u[1] &amp; 0x80000000u) != 0,</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;                                    e - 1023 - man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> + 1, 0x80000000u,</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;                                    m1, m2);</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;            <span class="comment">// we do not have to call Standardizing() here</span></div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;            <span class="comment">// because the mantissa will have the highest bit set</span></div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;        }</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160;        {</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160;            <span class="comment">// e == 0</span></div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;            <span class="keywordflow">if</span>( m1 != 0 || m2 != 0 )</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;            {</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160;                <span class="comment">// If E=0 and F is nonzero,</span></div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;                <span class="comment">// then V=(-1)**S * 2 ** (-1022) * (0.F)</span></div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;                <span class="comment">// These are &quot;unnormalized&quot; values.</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;                UInt&lt;2&gt; m;</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;                m.table[1] = m1;</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;                m.table[0] = m2;</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;                <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> moved = m.CompensationToLeft();</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160;                FromDouble_SetExpAndMan((temp.u[1] &amp; 0x80000000u) != 0,</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160;                                        e - 1022 - man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> + 1 - moved, 0,</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;                                        m.table[1], m.table[0]);</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;            }</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;            {</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;                <span class="comment">// If E=0 and F is zero and S is 1, then V=-0</span></div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;                <span class="comment">// If E=0 and F is zero and S is 0, then V=0 </span></div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;                <span class="comment">// we do not support -0 or 0, only is one 0</span></div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160;                <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;            }</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;        }</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;    <span class="keywordflow">return</span> 0; <span class="comment">// never be a carry</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;    }</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;    <span class="keywordtype">void</span> FromDouble_SetExpAndMan(<span class="keywordtype">bool</span> is_sign, <span class="keywordtype">int</span> e, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mhighest, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m1, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m2)</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;    {</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;        exponent = e;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160;</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160;        <span class="keywordflow">if</span>( man &gt; 1 )</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;        {</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = m1 | mhighest;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man-2)] = m2;</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160;            <span class="comment">// although man&gt;1 we&#39;re using casting into sint</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;            <span class="comment">// to get rid from a warning which generates Microsoft Visual:</span></div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160;            <span class="comment">// warning C4307: &#39;*&#39; : integral constant overflow</span></div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;            <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=0 ; i&lt;man-2 ; ++i)</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;                mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = 0;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160;        }</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;        {</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[0] = m1 | mhighest;</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;        }</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;        info = 0;</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;    </div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160;        <span class="comment">// the value should be different from zero</span></div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160;        TTMATH_ASSERT( mantissa.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() == false )</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;    }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;    <span class="comment">// 64bit platforms</span></div><div class="line"><a name="l02736"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247"> 2736</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">FromDouble</a>(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;    {</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;        <span class="comment">// I am not sure what will be on a plaltform which has </span></div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;        <span class="comment">// a different endianness... but we use this library only</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;        <span class="comment">// on x86 and amd (intel) 64 bits (as there&#39;s a lot of assembler code)</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;        <span class="keyword">union </span></div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;        {</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;            <span class="keywordtype">double</span> d;</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> u; <span class="comment">// one 64bit word</span></div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;        } temp;</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;        temp.d = value;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;                          </div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = (temp.u &amp; 0x7FF0000000000000ul) &gt;&gt; 52;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m = (temp.u &amp;    0xFFFFFFFFFFFFFul) &lt;&lt; 11;</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;        </div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;        <span class="keywordflow">if</span>( e == 2047 )</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;        {</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;            <span class="comment">// If E=2047 and F is nonzero, then V=NaN (&quot;Not a number&quot;)</span></div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;            <span class="comment">// If E=2047 and F is zero and S is 1, then V=-Infinity</span></div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;            <span class="comment">// If E=2047 and F is zero and S is 0, then V=Infinity</span></div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;            <span class="comment">// we do not support -Infinity and +Infinity</span></div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;            <span class="comment">// we assume that there is always NaN </span></div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;        }</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;        <span class="keywordflow">if</span>( e &gt; 0 )</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160;        {</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;            <span class="comment">// If 0&lt;E&lt;2047 then</span></div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;            <span class="comment">// V=(-1)**S * 2 ** (E-1023) * (1.F)</span></div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;            <span class="comment">// where &quot;1.F&quot; is intended to represent the binary number</span></div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160;            <span class="comment">// created by prefixing F with an implicit leading 1 and a binary point.</span></div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;            </div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160;            FromDouble_SetExpAndMan((temp.u &amp; 0x8000000000000000ul) != 0,</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;                                    e - 1023 - man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> + 1,</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;                                    0x8000000000000000ul, m);</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;            <span class="comment">// we do not have to call Standardizing() here</span></div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160;            <span class="comment">// because the mantissa will have the highest bit set</span></div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;        }</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160;        {</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160;            <span class="comment">// e == 0</span></div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160;            <span class="keywordflow">if</span>( m != 0 )</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160;            {</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;                <span class="comment">// If E=0 and F is nonzero,</span></div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160;                <span class="comment">// then V=(-1)**S * 2 ** (-1022) * (0.F)</span></div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160;                <span class="comment">// These are &quot;unnormalized&quot; values.</span></div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;                FromDouble_SetExpAndMan(<span class="keywordtype">bool</span>(temp.u &amp; 0x8000000000000000ul),</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;                                        e - 1022 - man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> + 1, 0, m);</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;                <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160;            }</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;            {</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160;                <span class="comment">// If E=0 and F is zero and S is 1, then V=-0</span></div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160;                <span class="comment">// If E=0 and F is zero and S is 0, then V=0 </span></div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160;                <span class="comment">// we do not support -0 or 0, only is one 0</span></div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;                <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;            }</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;        }</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;    <span class="keywordflow">return</span> 0; <span class="comment">// never be a carry</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;    }</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160;</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160;    <span class="keywordtype">void</span> FromDouble_SetExpAndMan(<span class="keywordtype">bool</span> is_sign, <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mhighest, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m)</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;    {</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;        exponent = e;</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = m | mhighest;</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160;        <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=0 ; i&lt;man-1 ; ++i)</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = 0;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160;</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160;        info = 0;</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160;        <span class="comment">// the value should be different from zero</span></div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;        TTMATH_ASSERT( mantissa.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() == false )</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;    }</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160;<span class="comment">        this method converts from float to this class</span></div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02833"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a448d79907dbc27e897d0f6c55ecde0b4"> 2833</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a448d79907dbc27e897d0f6c55ecde0b4">FromFloat</a>(<span class="keywordtype">float</span> value)</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;    {</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">FromDouble</a>(<span class="keywordtype">double</span>(value));</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;    }</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;<span class="comment">        this method converts from this class into the &#39;double&#39;</span></div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160;<span class="comment">        if the value is too big:</span></div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160;<span class="comment">            &#39;result&#39; will be +/-infinity (depending on the sign)</span></div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;<span class="comment">        if the value is too small:</span></div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160;<span class="comment">            &#39;result&#39; will be 0</span></div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02848"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a3008dfb310b1580c45116f8c1d9ea6d9"> 2848</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classttmath_1_1_big.html#a3008dfb310b1580c45116f8c1d9ea6d9">ToDouble</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;    <span class="keywordtype">double</span> result;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a3008dfb310b1580c45116f8c1d9ea6d9">ToDouble</a>(result);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;    }</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160;</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160;</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160;<span class="comment">        an auxiliary method to check if the float value is +/-infinity</span></div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;<span class="comment">        we provide this method because isinf(float) in only in C99 language</span></div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;<span class="comment">        description taken from: http://www.psc.edu/general/software/packages/ieee/ieee.php</span></div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160;<span class="comment">        The IEEE single precision floating point standard representation requires a 32 bit word,</span></div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;<span class="comment">        which may be represented as numbered from 0 to 31, left to right.</span></div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;<span class="comment">        The first bit is the sign bit, S, the next eight bits are the exponent bits, &#39;E&#39;,</span></div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160;<span class="comment">        and the final 23 bits are the fraction &#39;F&#39;:</span></div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;<span class="comment">            S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF</span></div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160;<span class="comment">            0 1      8 9                    31</span></div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;<span class="comment">        The value V represented by the word may be determined as follows:</span></div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160;<span class="comment">        - If E=255 and F is nonzero, then V=NaN (&quot;Not a number&quot;)</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;<span class="comment">        - If E=255 and F is zero and S is 1, then V=-Infinity</span></div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;<span class="comment">        - If E=255 and F is zero and S is 0, then V=Infinity</span></div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160;<span class="comment">        - If 0&lt;E&lt;255 then V=(-1)**S * 2 ** (E-127) * (1.F) where &quot;1.F&quot; is intended to represent</span></div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;<span class="comment">          the binary number created by prefixing F with an implicit leading 1 and a binary point.</span></div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;<span class="comment">        - If E=0 and F is nonzero, then V=(-1)**S * 2 ** (-126) * (0.F) These are &quot;unnormalized&quot; values.</span></div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;<span class="comment">        - If E=0 and F is zero and S is 1, then V=-0</span></div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160;<span class="comment">        - If E=0 and F is zero and S is 0, then V=0</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160;    <span class="keywordtype">bool</span> IsInf(<span class="keywordtype">float</span> value)<span class="keyword"> const</span></div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160;        <span class="comment">// CHECK ME</span></div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160;        <span class="comment">// need testing on a 64 bit machine</span></div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160;        <span class="keyword">union </span></div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160;        {</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;            <span class="keywordtype">float</span> d;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> u;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160;        } temp;</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;        temp.d = value;</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160;        <span class="keywordflow">if</span>( ((temp.u &gt;&gt; 23) &amp; 0xff) == 0xff )</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;        {</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160;            <span class="keywordflow">if</span>( (temp.u &amp; 0x7FFFFF) == 0 )</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// +/- infinity</span></div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160;        }</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;    }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160;</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160;<span class="comment">        this method converts from this class into the &#39;float&#39;</span></div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160;<span class="comment">        if the value is too big:</span></div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;<span class="comment">            &#39;result&#39; will be +/-infinity (depending on the sign)</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160;<span class="comment">        if the value is too small:</span></div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160;<span class="comment">            &#39;result&#39; will be 0</span></div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02920"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a7983fae3bacfd7705c23cb509d781451"> 2920</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classttmath_1_1_big.html#a7983fae3bacfd7705c23cb509d781451">ToFloat</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160;    <span class="keywordtype">float</span> result;</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a7983fae3bacfd7705c23cb509d781451">ToFloat</a>(result);</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;    }</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;<span class="comment">        this method converts from this class into the &#39;float&#39;</span></div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;<span class="comment">        if the value is too big:</span></div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160;<span class="comment">        -   &#39;result&#39; will be +/-infinity (depending on the sign)</span></div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160;<span class="comment">        -   and the method returns 1</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;<span class="comment">        if the value is too small:</span></div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160;<span class="comment">        -   &#39;result&#39; will be 0</span></div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;<span class="comment">        -   and the method returns 1</span></div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02941"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a6e6b6458935b167e3301c72c280b0670"> 2941</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a6e6b6458935b167e3301c72c280b0670">ToFloat</a>(<span class="keywordtype">float</span> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160;    <span class="keywordtype">double</span> result_double;</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#a3008dfb310b1580c45116f8c1d9ea6d9">ToDouble</a>(result_double);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160;        result = float(result_double);</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;        </div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;        <span class="keywordflow">if</span>( result == -0.0f )</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;            result = 0.0f;</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;        <span class="keywordflow">if</span>( c )</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160;        <span class="comment">// although the result_double can have a correct value</span></div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;        <span class="comment">// but after converting to float there can be infinity</span></div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160;</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;        <span class="keywordflow">if</span>( IsInf(result) )</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160;</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;        <span class="keywordflow">if</span>( result == 0.0f &amp;&amp; result_double != 0.0 )</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;            <span class="comment">// result_double was too small for float</span></div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;    }</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;<span class="comment">        this method converts from this class into the &#39;double&#39;</span></div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160;<span class="comment">        if the value is too big:</span></div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;<span class="comment">        -   &#39;result&#39; will be +/-infinity (depending on the sign)</span></div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160;<span class="comment">        -   and the method returns 1</span></div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160;<span class="comment">        if the value is too small:</span></div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;<span class="comment">        -   &#39;result&#39; will be 0</span></div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160;<span class="comment">        -   and the method returns 1</span></div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02979"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a047a2c4143d827b2e5820d0609639525"> 2979</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a047a2c4143d827b2e5820d0609639525">ToDouble</a>(<span class="keywordtype">double</span> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;        {</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160;            result = 0.0;</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160;        }</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;        {</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;            result = ToDouble_SetDouble( <span class="keyword">false</span>, 2047, 0, <span class="keyword">false</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160;</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;        }</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e_correction = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) - 1;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160;        <span class="keywordflow">if</span>( exponent &gt;= 1024 - e_correction )</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;        {</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160;            <span class="comment">// +/- infinity</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;            result = ToDouble_SetDouble( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>(), 2047, 0, <span class="keyword">true</span>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160;</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;        <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;        }</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= -1023 - 52 - e_correction )</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;        {</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;            <span class="comment">// too small value - we assume that there&#39;ll be a zero</span></div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160;            result = 0;</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160;</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160;            <span class="comment">// and return a carry</span></div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160;        <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160;        }</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;        </div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>() + e_correction;</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160;        <span class="keywordflow">if</span>( e &lt;= -1023 )</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;        {</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160;            <span class="comment">// -1023-52 &lt; e &lt;= -1023  (unnormalized value)</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160;            result = ToDouble_SetDouble( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>(), 0, -(e + 1023));</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;        }</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160;        {</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160;            <span class="comment">// -1023 &lt; e &lt; 1024</span></div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160;            result = ToDouble_SetDouble( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>(), e + 1023, -1);</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;        }</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160;    }</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160;</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160;<span class="preprocessor">#ifdef TTMATH_PLATFORM32</span></div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;    <span class="comment">// 32bit platforms</span></div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;    <span class="keywordtype">double</span> ToDouble_SetDouble(<span class="keywordtype">bool</span> is_sign, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> e, <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> move, <span class="keywordtype">bool</span> infinity = <span class="keyword">false</span>, <span class="keywordtype">bool</span> nan = <span class="keyword">false</span>)<span class="keyword"> const</span></div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160;        <span class="keyword">union </span></div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;        {</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;            <span class="keywordtype">double</span> d;</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> u[2]; <span class="comment">// two 32bit words</span></div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160;        } temp;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;        temp.u[0] = temp.u[1] = 0;</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;            temp.u[1] |= 0x80000000u;</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160;</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;        temp.u[1] |= (e &lt;&lt; 20) &amp; 0x7FF00000u;</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160;</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160;        <span class="keywordflow">if</span>( nan )</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;        {</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160;            temp.u[0] |= 1;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160;            <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160;        }</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160;</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160;        <span class="keywordflow">if</span>( infinity )</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;            <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;        UInt&lt;2&gt; m;</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160;        m.table[1] = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1];</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160;        m.table[0] = ( man &gt; 1 ) ? mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man-2)] : 0;</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;        <span class="comment">// although man&gt;1 we&#39;re using casting into sint</span></div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160;        <span class="comment">// to get rid from a warning which generates Microsoft Visual:</span></div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160;        <span class="comment">// warning C4307: &#39;*&#39; : integral constant overflow</span></div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;        m.Rcr( 12 + move );</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160;        m.table[1] &amp;= 0xFFFFFu; <span class="comment">// cutting the 20 bit (when &#39;move&#39; was -1)</span></div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160;        temp.u[1] |= m.table[1];</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;        temp.u[0] |= m.table[0];</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;    <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160;    }</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160;</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160;    <span class="comment">// 64bit platforms</span></div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160;    <span class="keywordtype">double</span> ToDouble_SetDouble(<span class="keywordtype">bool</span> is_sign, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> e, <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> move, <span class="keywordtype">bool</span> infinity = <span class="keyword">false</span>, <span class="keywordtype">bool</span> nan = <span class="keyword">false</span>)<span class="keyword"> const</span></div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;        <span class="keyword">union </span></div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;        {</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;            <span class="keywordtype">double</span> d;</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> u; <span class="comment">// 64bit word</span></div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160;        } temp;</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160;</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160;        temp.u = 0;</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;        </div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160;            temp.u |= 0x8000000000000000ul;</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;                        </div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160;        temp.u |= (e &lt;&lt; 52) &amp; 0x7FF0000000000000ul;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160;</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;        <span class="keywordflow">if</span>( nan )</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160;        {</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160;            temp.u |= 1;</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160;            <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160;        }</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160;        <span class="keywordflow">if</span>( infinity )</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160;            <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160;</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> m = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1];</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160;        m &gt;&gt;= ( 12 + move );</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;        m &amp;= 0xFFFFFFFFFFFFFul; <span class="comment">// cutting the 20 bit (when &#39;move&#39; was -1)</span></div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160;        temp.u |= m;</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160;    <span class="keywordflow">return</span> temp.d;</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;    }</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160;</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160;</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;<span class="comment">        an operator= for converting &#39;sint&#39; to this class</span></div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03119"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4"> 3119</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4">operator=</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> value)</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160;    {</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160;    }</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160;</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;<span class="comment">        an operator= for converting &#39;uint&#39; to this class</span></div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03130"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a71d39cd10c72a302dc3f786b76a4b790"> 3130</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a71d39cd10c72a302dc3f786b76a4b790">operator=</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> value)</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160;    {</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160;</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160;    }</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160;</div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160;<span class="comment">        an operator= for converting &#39;float&#39; to this class</span></div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03141"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ab5fd85926cbbebae5b5ccfe5249a446b"> 3141</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#ab5fd85926cbbebae5b5ccfe5249a446b">operator=</a>(<span class="keywordtype">float</span> value)</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160;    {</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a448d79907dbc27e897d0f6c55ecde0b4">FromFloat</a>(value);</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160;    }</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160;</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160;<span class="comment">        an operator= for converting &#39;double&#39; to this class</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03152"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a90668305264d2c305bb0642f353da519"> 3152</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a90668305264d2c305bb0642f353da519">operator=</a>(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160;    {</div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160;        <a class="code" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">FromDouble</a>(value);</div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;</div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160;    }</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160;</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160;<span class="comment">        a constructor for converting &#39;sint&#39; to this class</span></div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03163"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5036639819aa811aa9dba41c9fdd7654"> 3163</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a5036639819aa811aa9dba41c9fdd7654">Big</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> value)</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160;    {</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160;    }</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160;<span class="comment">        a constructor for converting &#39;uint&#39; to this class</span></div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03171"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a960b3d4052c7b8f8c3a504fe6671b193"> 3171</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a960b3d4052c7b8f8c3a504fe6671b193">Big</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> value)</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;    {   </div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160;    }</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160;    </div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160;<span class="comment">        a constructor for converting &#39;double&#39; to this class</span></div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03180"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a4a63cbcb29c8afc0aa17dcf160b5c500"> 3180</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a4a63cbcb29c8afc0aa17dcf160b5c500">Big</a>(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160;    {</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160;        <a class="code" href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">FromDouble</a>(value);</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160;    }</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160;</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160;<span class="comment">        a constructor for converting &#39;float&#39; to this class</span></div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03189"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5e052f495cf95abf16c322d72cf752bf"> 3189</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a5e052f495cf95abf16c322d72cf752bf">Big</a>(<span class="keywordtype">float</span> value)</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160;    {</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a448d79907dbc27e897d0f6c55ecde0b4">FromFloat</a>(value);</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160;    }</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160;</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160;</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160;<span class="preprocessor">#ifdef TTMATH_PLATFORM32</span></div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (64 bit unsigned integer)</span></div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(ulint &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160;    <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;2&gt;</a> temp; <span class="comment">// 64 bits container</span></div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(temp);</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160;        temp.<a class="code" href="classttmath_1_1_u_int.html#a403da6805149cdfb8a69f39a15cdf505">ToUInt</a>(result);</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160;</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160;    }</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160;</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (64 bit unsigned integer)</span></div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>(ulint &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result);</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160;    }</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (64 bit unsigned integer)</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>(slint &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160;    Int&lt;2&gt; temp; <span class="comment">// 64 bits container</span></div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160;</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>(temp);</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160;        temp.ToInt(result);</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160;</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160;    }</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160;</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160;<span class="comment">        a method for converting &#39;ulint&#39; (64bit unsigned integer) to this class</span></div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(ulint value)</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160;    {</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160;        <span class="keywordflow">if</span>( value == 0 )</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160;        {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160;        }</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160;</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160;        info = 0;</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160;</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160;        <span class="keywordflow">if</span>( man == 1 )</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;        {</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160;            <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> bit = mantissa.FindLeadingBitInWord(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value &gt;&gt; <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>));</div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160;</div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160;            <span class="keywordflow">if</span>( bit != -1 )</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160;            {</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160;                <span class="comment">// the highest word from value is different from zero</span></div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160;                bit += 1;</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160;                value &gt;&gt;= bit;</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;                exponent = bit;</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160;            }</div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160;            {</div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160;                exponent.<a class="code" href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">SetZero</a>();</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160;            }</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160;</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[0] = <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value);</div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160;        }</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;        {</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160;<span class="preprocessor">        #ifdef _MSC_VER</span></div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;        <span class="comment">//warning C4307: &#39;*&#39; : integral constant overflow</span></div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160;<span class="preprocessor">        #pragma warning( disable: 4307 )</span></div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;<span class="preprocessor">        #endif</span></div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160;</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160;            <span class="comment">// man &gt;= 2</span></div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-1] = <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value &gt;&gt; <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-2] = <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value);</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160;<span class="preprocessor">        #ifdef _MSC_VER</span></div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160;        <span class="comment">//warning C4307: &#39;*&#39; : integral constant overflow</span></div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;<span class="preprocessor">        #pragma warning( default: 4307 )</span></div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160;<span class="preprocessor">        #endif</span></div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160;            exponent = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man-2) * <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>);</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160;            <span class="keywordflow">for</span>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i=0 ; i&lt;man-2 ; ++i)</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160;                mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] = 0;</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160;        }</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160;</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160;        <span class="comment">// there shouldn&#39;t be a carry because &#39;value&#39; has the &#39;ulint&#39; type </span></div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160;        <span class="comment">// (we have sufficient exponent)</span></div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160;        <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160;</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160;    }</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160;</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160;<span class="comment">        a method for converting &#39;ulint&#39; (64bit unsigned integer) to this class</span></div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(ulint value)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160;    {</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160;    }</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160;</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160;<span class="comment">        a method for converting &#39;slint&#39; (64bit signed integer) to this class</span></div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(slint value)</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160;    {</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160;    <span class="keywordtype">bool</span> is_sign = <span class="keyword">false</span>;</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160;</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160;        <span class="keywordflow">if</span>( value &lt; 0 )</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;        {</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160;            value   = -value;</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160;            is_sign = <span class="keyword">true</span>;</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160;        }</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160;</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(ulint(value));</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160;</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160;</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160;    }</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160;</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160;<span class="comment">        a constructor for converting &#39;ulint&#39; (64bit unsigned integer) to this class</span></div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160;    <a class="code" href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab">Big</a>(ulint value)</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160;    {   </div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160;    }</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160;</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160;<span class="comment">        an operator for converting &#39;ulint&#39; (64bit unsigned integer) to this class</span></div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160;    Big&lt;exp, man&gt; &amp; <a class="code" href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4">operator=</a>(ulint value)</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160;    {   </div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160;</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160;    }</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160;</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160;<span class="comment">        a constructor for converting &#39;slint&#39; (64bit signed integer) to this class</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160;    <a class="code" href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab">Big</a>(slint value)</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160;    {   </div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160;    }</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160;</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160;<span class="comment">        an operator for converting &#39;slint&#39; (64bit signed integer) to this class</span></div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160;    Big&lt;exp, man&gt; &amp; <a class="code" href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4">operator=</a>(slint value)</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160;    {   </div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160;</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160;    }</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160;</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160;</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160;</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160;<span class="preprocessor">#ifdef TTMATH_PLATFORM64</span></div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160;</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (32 bit unsigned integer)</span></div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03380"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a26c0188d1e97b54804c1c87706722dd8"> 3380</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a26c0188d1e97b54804c1c87706722dd8">ToUInt</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> result_uint;</div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160;</div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result_uint);</div><div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160;        result = (<span class="keywordtype">unsigned</span> int)result_uint;</div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;</div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160;        <span class="keywordflow">if</span>( c || result_uint != <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(result) )</div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160;</div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;    }</div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160;</div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (32 bit unsigned integer)</span></div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03399"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a48792b7753dc6e5d690bf8a578463bdf"> 3399</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a48792b7753dc6e5d690bf8a578463bdf">ToInt</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ToUInt</a>(result);</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160;    }</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160;</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160;<span class="comment">        this method converts &#39;this&#39; into &#39;result&#39; (32 bit signed integer)</span></div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160;<span class="comment">        if the value is too big this method returns a carry (1)</span></div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03410"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a7464feaf986422898a2dd1e66e73784f"> 3410</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a7464feaf986422898a2dd1e66e73784f">ToInt</a>(<span class="keywordtype">signed</span> <span class="keywordtype">int</span> &amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160;    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> result_sint;</div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160;</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ToInt</a>(result_sint);</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160;        result = (<span class="keywordtype">signed</span> int)result_sint;</div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160;</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160;        <span class="keywordflow">if</span>( c || result_sint != <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(result) )</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;</div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160;    }</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160;</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;    <span class="comment">/*</span></div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;<span class="comment">        this method converts 32 bit unsigned int to this class</span></div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160;    {</div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value));</div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160;    }</div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;</div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160;</div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160;    <span class="comment">/*</span></div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160;<span class="comment">        this method converts 32 bit unsigned int to this class</span></div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160;    {</div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(value));</div><div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160;    }</div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160;</div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160;</div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160;    <span class="comment">/*</span></div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160;<span class="comment">        this method converts 32 bit signed int to this class</span></div><div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160;<span class="comment">        ***this method is created only on a 64bit platform***</span></div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(<span class="keywordtype">signed</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160;    {</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(value));</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160;    }</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160;</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160;<span class="comment">        an operator= for converting 32 bit unsigned int to this class</span></div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160;<span class="comment">        ***this operator is created only on a 64bit platform***</span></div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03458"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac641d85a2570d13d2520a88ba62d8f6e"> 3458</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#ac641d85a2570d13d2520a88ba62d8f6e">operator=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160;    {</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160;</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160;    }</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160;</div><div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160;<span class="comment">        a constructor for converting 32 bit unsigned int to this class</span></div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160;<span class="comment">        ***this constructor is created only on a 64bit platform***</span></div><div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03470"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#afa533455acaccdefe31e4ce4580a8f78"> 3470</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#afa533455acaccdefe31e4ce4580a8f78">Big</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160;    {</div><div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160;    }</div><div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160;</div><div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160;<span class="comment">        an operator for converting 32 bit signed int to this class</span></div><div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160;<span class="comment">        ***this operator is created only on a 64bit platform***</span></div><div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03480"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#abc832a11bd8421f42ee93c29b52f04b9"> 3480</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#abc832a11bd8421f42ee93c29b52f04b9">operator=</a>(<span class="keywordtype">signed</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160;    {</div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160;</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160;    }</div><div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160;</div><div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160;<span class="comment">        a constructor for converting 32 bit signed int to this class</span></div><div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160;<span class="comment">        ***this constructor is created only on a 64bit platform***</span></div><div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03492"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a03bb399fd1b41237284e78689b861ff2"> 3492</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a03bb399fd1b41237284e78689b861ff2">Big</a>(<span class="keywordtype">signed</span> <span class="keywordtype">int</span> value)</div><div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160;    {</div><div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160;    }</div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160;</div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160;</div><div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160;</div><div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160;<span class="comment">        an auxiliary method for converting from UInt and Int</span></div><div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160;<span class="comment">        we assume that there&#39;ll never be a carry here</span></div><div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160;<span class="comment">        (we have an exponent and the value in Big can be bigger than</span></div><div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160;<span class="comment">        that one from the UInt)</span></div><div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromUIntOrInt(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; value, <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> compensation)</div><div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160;    {</div><div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> minimum_size = (int_size &lt; man)? int_size : man;</div><div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160;        exponent          = (<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(int_size)-<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man)) * <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) - compensation;</div><div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160;</div><div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160;        <span class="comment">// copying the highest words</span></div><div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160;        <span class="keywordflow">for</span>(i=1 ; i&lt;=minimum_size ; ++i)</div><div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-i] = value.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[int_size-i];</div><div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>&#160;</div><div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160;        <span class="comment">// setting the rest of mantissa.table into zero (if some has left)</span></div><div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160;        <span class="keywordflow">for</span>( ; i&lt;=man ; ++i)</div><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160;            mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[man-i] = 0;</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160;</div><div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160;        <span class="comment">// the highest bit is either one or zero (when the whole mantissa is zero)</span></div><div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160;        <span class="comment">// we can only call CorrectZero()</span></div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160;        CorrectZero();</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160;</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160;    }</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160;</div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160;</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160;<span class="comment">        a method for converting from &#39;UInt&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03538"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a1051668083a766216ca3dc218d7dbf23"> 3538</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a1051668083a766216ca3dc218d7dbf23">FromUInt</a>(<a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> value)</div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160;    {</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160;        info = 0;</div><div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> compensation = (<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>)value.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160;    </div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160;    <span class="keywordflow">return</span> FromUIntOrInt(value, compensation);</div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;    }</div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160;</div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160;<span class="comment">        a method for converting from &#39;UInt&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03551"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a619f1155c5a5919eb2be4effee15c851"> 3551</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a619f1155c5a5919eb2be4effee15c851">FromInt</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; value)</div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160;    {</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>&#160;    }</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160;</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160;        <span class="comment"></span></div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160;<span class="comment">        a method for converting from &#39;Int&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03561"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#abd656baf05f508405a599a82faadec49"> 3561</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#abd656baf05f508405a599a82faadec49">FromInt</a>(<a class="code" href="classttmath_1_1_int.html">Int&lt;int_size&gt;</a> value)</div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160;    {</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;        info = 0;</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160;        <span class="keywordtype">bool</span> is_sign = <span class="keyword">false</span>;</div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160;</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160;        <span class="keywordflow">if</span>( value.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160;        {</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160;            value.<a class="code" href="classttmath_1_1_int.html#a1459d8f91899c87e26a59ccbf9ed3f00">ChangeSign</a>();</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160;            is_sign = <span class="keyword">true</span>;</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160;        }</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160;        </div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> compensation = (<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>)value.<a class="code" href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">CompensationToLeft</a>();</div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160;        FromUIntOrInt(value, compensation);</div><div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160;</div><div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160;        <span class="keywordflow">if</span>( is_sign )</div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">SetSign</a>();</div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160;</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>&#160;    }</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160;</div><div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160;<span class="comment">        an operator= for converting from &#39;Int&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03586"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a111c5f0706fdbb30d2c1c83340e9563d"> 3586</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a111c5f0706fdbb30d2c1c83340e9563d">operator=</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_int.html">Int&lt;int_size&gt;</a> &amp; value)</div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160;    {</div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160;</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160;    }</div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160;</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160;<span class="comment">        a constructor for converting from &#39;Int&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03598"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac5ec17e2b08ec58b77bd1d41bd5cf8d2"> 3598</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#ac5ec17e2b08ec58b77bd1d41bd5cf8d2">Big</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_int.html">Int&lt;int_size&gt;</a> &amp; value)</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160;    {</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">FromInt</a>(value);</div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160;    }</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160;</div><div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160;<span class="comment">        an operator= for converting from &#39;UInt&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03608"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a1f87240330d286478cbb1a80f857bbaf"> 3608</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a1f87240330d286478cbb1a80f857bbaf">operator=</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; value)</div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160;    {</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160;</div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160;    }</div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160;</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160;<span class="comment">        a constructor for converting from &#39;UInt&lt;int_size&gt;&#39; to this class</span></div><div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> <span class="keywordtype">int</span>_size&gt;</div><div class="line"><a name="l03620"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa6cfe4e52a7a85a71e14b7226814eb46"> 3620</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#aa6cfe4e52a7a85a71e14b7226814eb46">Big</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_u_int.html">UInt&lt;int_size&gt;</a> &amp; value)</div><div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160;    {</div><div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">FromUInt</a>(value);</div><div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160;    }</div><div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>&#160;</div><div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160;<span class="comment">        an operator= for converting from &#39;Big&lt;another_exp, another_man&gt;&#39; to this class</span></div><div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> another_exp, u<span class="keywordtype">int</span> another_man&gt;</div><div class="line"><a name="l03630"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ab448e5aab3cd9ec3cba573cba2a0ec9f"> 3630</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#ab448e5aab3cd9ec3cba573cba2a0ec9f">operator=</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;another_exp, another_man&gt;</a> &amp; value)</div><div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160;    {</div><div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a961c89a45552dfac6d4a47e6e6d21106">FromBig</a>(value);</div><div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160;</div><div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160;    }</div><div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160;</div><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160;<span class="comment">        a constructor for converting from &#39;Big&lt;another_exp, another_man&gt;&#39; to this class</span></div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160;    <span class="keyword">template</span>&lt;u<span class="keywordtype">int</span> another_exp, u<span class="keywordtype">int</span> another_man&gt;</div><div class="line"><a name="l03642"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a6e6d6c539858b95828c386306c638f47"> 3642</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a6e6d6c539858b95828c386306c638f47">Big</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;another_exp, another_man&gt;</a> &amp; value)</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160;    {</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a961c89a45552dfac6d4a47e6e6d21106">FromBig</a>(value);</div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160;    }</div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160;</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160;<span class="comment">        a default constructor</span></div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160;<span class="comment">        by default we don&#39;t set any of the members to zero</span></div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;<span class="comment">        only NaN flag is set</span></div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160;<span class="comment">        if you want the mantissa and exponent to be set to zero </span></div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160;<span class="comment">        define TTMATH_BIG_DEFAULT_CLEAR macro</span></div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160;<span class="comment">        (useful for debug purposes)</span></div><div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03658"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab"> 3658</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab">Big</a>()</div><div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160;    {</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160;<span class="preprocessor">        #ifdef TTMATH_BIG_DEFAULT_CLEAR</span></div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160;</div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a71805011593c0be2e134dae8d71983ea">SetZeroNan</a>();</div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160;</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160;<span class="preprocessor">        #else</span></div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160;</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160;            info = <a class="code" href="ttmathbig_8h.html#a6219093f504910a0e8415844157c70fc">TTMATH_BIG_NAN</a>;</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160;            <span class="comment">// we&#39;re directly setting &#39;info&#39; (instead of calling SetNan())</span></div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160;            <span class="comment">// in order to get rid of a warning saying that &#39;info&#39; is uninitialized</span></div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160;</div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160;<span class="preprocessor">        #endif</span></div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160;    }</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160;</div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;<span class="comment">        a destructor</span></div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03677"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a24763be7072f23d6d057de265516f551"> 3677</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a24763be7072f23d6d057de265516f551">~Big</a>()</div><div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160;    {</div><div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160;    }</div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160;</div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>&#160;<span class="comment">        the default assignment operator</span></div><div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03685"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a1e9f5ae0f964d6492b6201d8c8b9e445"> 3685</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a1e9f5ae0f964d6492b6201d8c8b9e445">operator=</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; value)</div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160;    {</div><div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160;        info     = value.info;</div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160;        exponent = value.exponent;</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160;        mantissa = value.mantissa;</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160;</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160;    }</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160;</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;<span class="comment">        a constructor for copying from another object of this class</span></div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160;    </div><div class="line"><a name="l03699"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#afb973e2f20e7ce89b161df73c6bea8aa"> 3699</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#afb973e2f20e7ce89b161df73c6bea8aa">Big</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; value)</div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160;    {</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4">operator=</a>(value);</div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160;    }</div><div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160;    </div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160;</div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160;<span class="comment">        return value:</span></div><div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160;<span class="comment">        -  0 - ok and &#39;result&#39; will be an object of type std::string (or std::wstring) which holds the value</span></div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160;<span class="comment">        -  1 - if there is a carry (it shoudn&#39;t be in a normal situation - if it is that means there</span></div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160;<span class="comment">               is somewhere an error in the library)</span></div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03715"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a3d8da6a88dda87845a13a13c8abfcfa4"> 3715</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a3d8da6a88dda87845a13a13c8abfcfa4">ToString</a>(  std::string &amp; result,</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160;                    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base         = 10,</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160;                    <span class="keywordtype">bool</span> scient       = <span class="keyword">false</span>,</div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;                    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> scient_from  = 15,</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160;                    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> round        = -1,</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160;                    <span class="keywordtype">bool</span> trim_zeroes  = <span class="keyword">true</span>,</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160;                    <span class="keywordtype">char</span> comma     = <span class="charliteral">&#39;.&#39;</span> )<span class="keyword"> const</span></div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160;</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>         = base;</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a2df433a7aa1269e9e88259c617606e9d">scient</a>       = scient;</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#aac79577f141c39adea40a9ab6842280e">scient_from</a>  = scient_from;</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#ad855ed895ef81b4a248b02dd923154e7">round</a>        = round;</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a8091e5fbba450554994ba4babc115575">trim_zeroes</a>  = trim_zeroes;</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a47f657fa1b7ff6c82cd82449207b55d2">comma</a>        = static_cast&lt;uint&gt;(comma);</div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160;</div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160;    <span class="keywordflow">return</span> ToStringBase&lt;std::string, char&gt;(result, conv);</div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;    }</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160;</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03740"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a46a0a5b484d4cdb01d8c8f488037135b"> 3740</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a46a0a5b484d4cdb01d8c8f488037135b">ToString</a>(std::string &amp; result, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160;        <span class="keywordflow">return</span> ToStringBase&lt;std::string, char&gt;(result, conv);</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160;    }</div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03750"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa8ccdb8b4d9851038d35b42dfe8d5dcf"> 3750</a></span>&#160;    std::string <a class="code" href="classttmath_1_1_big.html#aa8ccdb8b4d9851038d35b42dfe8d5dcf">ToString</a>(<span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160;        std::string result;</div><div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160;        ToStringBase&lt;std::string, char&gt;(result, conv);</div><div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160;        </div><div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160;    }</div><div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160;</div><div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03763"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a1e706c3bfa40fab6ff3957678e351750"> 3763</a></span>&#160;    std::string <a class="code" href="classttmath_1_1_big.html#a1e706c3bfa40fab6ff3957678e351750">ToString</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10)<span class="keyword"> const</span></div><div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> = base;</div><div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160;</div><div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a3d8da6a88dda87845a13a13c8abfcfa4">ToString</a>(conv);</div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160;    }</div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;</div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160;</div><div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160;<span class="preprocessor">#ifndef TTMATH_DONT_USE_WCHAR</span></div><div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160;</div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03780"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa650c1d2064f7449e1c1cbefbd6d753e"> 3780</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#aa650c1d2064f7449e1c1cbefbd6d753e">ToString</a>(  std::wstring &amp; result,</div><div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160;                    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base         = 10,</div><div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160;                    <span class="keywordtype">bool</span> scient       = <span class="keyword">false</span>,</div><div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160;                    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> scient_from  = 15,</div><div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160;                    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> round        = -1,</div><div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160;                    <span class="keywordtype">bool</span> trim_zeroes  = <span class="keyword">true</span>,</div><div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160;                    <span class="keywordtype">wchar_t</span> comma     = <span class="charliteral">&#39;.&#39;</span> )<span class="keyword"> const</span></div><div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160;</div><div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>         = base;</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a2df433a7aa1269e9e88259c617606e9d">scient</a>       = scient;</div><div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#aac79577f141c39adea40a9ab6842280e">scient_from</a>  = scient_from;</div><div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#ad855ed895ef81b4a248b02dd923154e7">round</a>        = round;</div><div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a8091e5fbba450554994ba4babc115575">trim_zeroes</a>  = trim_zeroes;</div><div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a47f657fa1b7ff6c82cd82449207b55d2">comma</a>        = static_cast&lt;uint&gt;(comma);</div><div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160;</div><div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160;    <span class="keywordflow">return</span> ToStringBase&lt;std::wstring, wchar_t&gt;(result, conv);</div><div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160;    }</div><div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160;</div><div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03805"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a99f65f7af34a5974793b01836c70cca3"> 3805</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a99f65f7af34a5974793b01836c70cca3">ToString</a>(std::wstring &amp; result, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160;        <span class="keywordflow">return</span> ToStringBase&lt;std::wstring, wchar_t&gt;(result, conv);</div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160;    }</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160;</div><div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03815"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#af73a550fc9a5e8fbfb93e44d3d5a0f61"> 3815</a></span>&#160;    std::wstring <a class="code" href="classttmath_1_1_big.html#af73a550fc9a5e8fbfb93e44d3d5a0f61">ToWString</a>(<span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160;        std::wstring result;</div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160;        ToStringBase&lt;std::wstring, wchar_t&gt;(result, conv);</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160;        </div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160;    }</div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160;</div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160;<span class="comment">        a method for converting into a string</span></div><div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160;<span class="comment">        struct Conv is defined in ttmathtypes.h, look there for more information about parameters</span></div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03828"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a607da160d527c93bdecfc96ff4d4f2df"> 3828</a></span>&#160;    std::wstring <a class="code" href="classttmath_1_1_big.html#a607da160d527c93bdecfc96ff4d4f2df">ToWString</a>(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10)<span class="keyword"> const</span></div><div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> = base;</div><div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160;</div><div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#af73a550fc9a5e8fbfb93e44d3d5a0f61">ToWString</a>(conv);</div><div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160;    }</div><div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160;</div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160;</div><div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160;</div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;</div><div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160;</div><div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToStringBase(string_type &amp; result, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160;        <span class="keyword">static</span> <span class="keywordtype">char</span> error_overflow_msg[] = <span class="stringliteral">&quot;overflow&quot;</span>;</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160;        <span class="keyword">static</span> <span class="keywordtype">char</span> error_nan_msg[]      = <span class="stringliteral">&quot;NaN&quot;</span>;</div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160;        result.erase();</div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;        {</div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160;            <a class="code" href="classttmath_1_1_misc.html#a77a225d405c1f54c28dfca566c486232">Misc::AssignString</a>(result, error_nan_msg);</div><div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160;        }</div><div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160;</div><div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&lt;2 || conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&gt;16 )</div><div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160;        {</div><div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160;            <a class="code" href="classttmath_1_1_misc.html#a77a225d405c1f54c28dfca566c486232">Misc::AssignString</a>(result, error_overflow_msg);</div><div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160;        }</div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160;    </div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160;        {</div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;            result = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160;</div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160;        }</div><div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160;</div><div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160;        <span class="comment">/*</span></div><div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160;<span class="comment">            since &#39;base&#39; is greater or equal 2 that &#39;new_exp&#39; of type &#39;Int&lt;exp&gt;&#39; should</span></div><div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160;<span class="comment">            hold the new value of exponent but we&#39;re using &#39;Int&lt;exp+1&gt;&#39; because</span></div><div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160;<span class="comment">            if the value for example would be &#39;max()&#39; then we couldn&#39;t show it</span></div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160;<span class="comment">                max() -&gt;  11111111 * 2 ^ 11111111111  (bin)(the mantissa and exponent have all bits set)</span></div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160;<span class="comment">                if we were using &#39;Int&lt;exp&gt;&#39; we couldn&#39;t show it in this format:</span></div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160;<span class="comment">                1,1111111 * 2 ^ 11111111111  (bin)</span></div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160;<span class="comment">                because we have to add something to the mantissa and because </span></div><div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160;<span class="comment">                mantissa is full we can&#39;t do it and it&#39;ll be a carry</span></div><div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;<span class="comment">                (look at ToString_SetCommaAndExponent(...))</span></div><div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160;<span class="comment">                when the base would be greater than two (for example 10) </span></div><div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160;<span class="comment">                we could use &#39;Int&lt;exp&gt;&#39; here</span></div><div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160;<span class="comment">        */</span></div><div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160;        Int&lt;exp+1&gt; new_exp;</div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160;</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160;        <span class="keywordflow">if</span>( ToString_CreateNewMantissaAndExponent&lt;string_type, char_type&gt;(result, conv, new_exp) )</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;        {</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160;            <a class="code" href="classttmath_1_1_misc.html#a77a225d405c1f54c28dfca566c486232">Misc::AssignString</a>(result, error_overflow_msg);</div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160;        }</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160;</div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160;            </div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160;        <span class="keywordflow">if</span>( ToString_SetCommaAndExponent&lt;string_type, char_type&gt;(result, conv, new_exp) )</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160;        {</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160;            <a class="code" href="classttmath_1_1_misc.html#a77a225d405c1f54c28dfca566c486232">Misc::AssignString</a>(result, error_overflow_msg);</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160;        }</div><div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160;</div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160;            result.insert(result.begin(), <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160;</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160;</div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160;    <span class="comment">// converted successfully</span></div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160;    }</div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160;</div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160;</div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160;<span class="comment">        in the method &#39;ToString_CreateNewMantissaAndExponent()&#39; we&#39;re using </span></div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160;<span class="comment">        type &#39;Big&lt;exp+1,man&gt;&#39; and we should have the ability to use some</span></div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160;<span class="comment">        necessary methods from that class (methods which are private here)</span></div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03917"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a3301351c9140d9531c4875d4472542c7"> 3917</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classttmath_1_1_big.html">Big</a>&lt;exp-1,man&gt;;</div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160;</div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160;<span class="comment">        input:</span></div><div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160;<span class="comment">            base - the base in range &lt;2,16&gt;</span></div><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160;<span class="comment">        output:</span></div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160;<span class="comment">            return values:</span></div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160;<span class="comment">                0 - ok</span></div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160;<span class="comment">                1 - if there was a carry</span></div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;<span class="comment">            new_man - the new mantissa for &#39;base&#39;</span></div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160;<span class="comment">            new_exp - the new exponent for &#39;base&#39;</span></div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160;<span class="comment">        mathematic part:</span></div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160;<span class="comment">        the value is stored as:</span></div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160;<span class="comment">            value = mantissa * 2^exponent</span></div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160;<span class="comment">        we want to show &#39;value&#39; as:</span></div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160;<span class="comment">            value = new_man * base^new_exp</span></div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160;<span class="comment">        then &#39;new_man&#39; we&#39;ll print using the standard method from UInt&lt;&gt; type for printing</span></div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;<span class="comment">        and &#39;new_exp&#39; is the offset of the comma operator in a system of a base &#39;base&#39;</span></div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160;<span class="comment">        value = mantissa * 2^exponent</span></div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160;<span class="comment">        value = mantissa * 2^exponent * (base^new_exp / base^new_exp)</span></div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160;<span class="comment">        value = mantissa * (2^exponent / base^new_exp) * base^new_exp</span></div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160;<span class="comment">        look at the part (2^exponent / base^new_exp), there&#39;ll be good if we take</span></div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160;<span class="comment">        a &#39;new_exp&#39; equal that value when the (2^exponent / base^new_exp) will be equal one</span></div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160;<span class="comment">        on account of the &#39;base&#39; is not as power of 2 (can be from 2 to 16),</span></div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160;<span class="comment">        this formula will not be true for integer &#39;new_exp&#39; then in our case we take </span></div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160;<span class="comment">        &#39;base^new_exp&#39; _greater_ than &#39;2^exponent&#39; </span></div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160;<span class="comment">        if &#39;base^new_exp&#39; were smaller than &#39;2^exponent&#39; the new mantissa could be</span></div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160;<span class="comment">        greater than the max value of the container UInt&lt;man&gt;</span></div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160;<span class="comment">        value = mantissa * (2^exponent / base^new_exp) * base^new_exp</span></div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160;<span class="comment">          let M = mantissa * (2^exponent / base^new_exp) then</span></div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160;<span class="comment">        value = M * base^new_exp</span></div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160;<span class="comment">        in our calculation we treat M as floating value showing it as:</span></div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160;<span class="comment">            M = mm * 2^ee where ee will be &lt;= 0 </span></div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160;<span class="comment">        next we&#39;ll move all bits of mm into the right when ee is equal zero</span></div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160;<span class="comment">        abs(ee) must not be too big that only few bits from mm we can leave</span></div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160;<span class="comment">        then we&#39;ll have:</span></div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160;<span class="comment">            M = mmm * 2^0</span></div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;<span class="comment">        &#39;mmm&#39; is the new_man which we&#39;re looking for</span></div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160;<span class="comment">        new_exp we calculate in this way:</span></div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160;<span class="comment">            2^exponent &lt;= base^new_exp</span></div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160;<span class="comment">            new_exp &gt;= log base (2^exponent)   &lt;- logarithm with the base &#39;base&#39; from (2^exponent)</span></div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160;<span class="comment">            </span></div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160;<span class="comment">            but we need new_exp as integer then we test:</span></div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160;<span class="comment">            if new_exp is greater than zero and with fraction we add one to new_exp</span></div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160;<span class="comment">              new_exp = new_exp + 1    (if new_exp&gt;0 and with fraction)</span></div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160;<span class="comment">            and at the end we take the integer part:</span></div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160;<span class="comment">              new_exp = int(new_exp)</span></div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaAndExponent( string_type &amp; new_man, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv,</div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160;                                                <a class="code" href="classttmath_1_1_int.html">Int&lt;exp+1&gt;</a> &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160;</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&lt;2 || conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&gt;16 )</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;    </div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160;        <span class="comment">// special method for base equal 2</span></div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> == 2 )</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_Base2(new_man, new_exp);</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160;</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160;        <span class="comment">// special method for base equal 4</span></div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> == 4 )</div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 2);</div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160;</div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160;        <span class="comment">// special method for base equal 8</span></div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> == 8 )</div><div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 3);</div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160;</div><div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160;        <span class="comment">// special method for base equal 16</span></div><div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> == 16 )</div><div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 4);</div><div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160;</div><div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160;</div><div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160;        <span class="comment">// this = mantissa * 2^exponent</span></div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160;</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160;        <span class="comment">// temp = +1 * 2^exponent  </span></div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160;        <span class="comment">// we&#39;re using a bigger type than &#39;big&lt;exp,man&gt;&#39; (look below)</span></div><div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp+1,man&gt;</a> temp;</div><div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160;        temp.info = 0;</div><div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160;        temp.exponent = exponent;</div><div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160;        temp.mantissa.<a class="code" href="classttmath_1_1_u_int.html#aa857e4036b8a726c70c51ff088080acb">SetOne</a>();</div><div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160;        c += temp.<a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160;</div><div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;        <span class="comment">// new_exp_ = log base (2^exponent)   </span></div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160;        <span class="comment">// if new_exp_ is positive and with fraction then we add one </span></div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp+1,man&gt;</a> new_exp_;</div><div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160;        c += new_exp_.ToString_Log(temp, conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>); <span class="comment">// this logarithm isn&#39;t very complicated</span></div><div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160;</div><div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160;        <span class="comment">// rounding up to the nearest integer</span></div><div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160;        <span class="keywordflow">if</span>( !new_exp_.<a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>() )</div><div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160;        {</div><div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160;            <span class="keywordflow">if</span>( !new_exp_.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160;                c += new_exp_.AddOne(); <span class="comment">// new_exp_ &gt; 0 and with fraction</span></div><div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160;</div><div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160;            new_exp_.<a class="code" href="classttmath_1_1_big.html#a6ae448d3c59f28495d6951bd688ed485">SkipFraction</a>();</div><div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160;        }</div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160;</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160;        <span class="keywordflow">if</span>( ToString_CreateNewMantissaTryExponent&lt;string_type, char_type&gt;(new_man, conv, new_exp_, new_exp) )</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160;        {</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160;            <span class="comment">// in very rare cases there can be an overflow from ToString_CreateNewMantissaTryExponent</span></div><div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160;            <span class="comment">// it means that new_exp_ was too small (the problem comes from floating point numbers precision)</span></div><div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160;            <span class="comment">// so we increse new_exp_ and try again</span></div><div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160;            new_exp_.AddOne();</div><div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160;            c += ToString_CreateNewMantissaTryExponent&lt;string_type, char_type&gt;(new_man, conv, new_exp_, new_exp);</div><div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160;        }</div><div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160;</div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160;    }</div><div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160;</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160;</div><div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160;<span class="comment">        trying to calculate new_man for given exponent (new_exp_)</span></div><div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160;<span class="comment">        if there is a carry it can mean that new_exp_ is too small</span></div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaTryExponent( string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv,</div><div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160;                                                <span class="keyword">const</span> Big&lt;exp+1,man&gt; &amp; new_exp_, Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160;</div><div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160;        <span class="comment">// because &#39;base^new_exp&#39; is &gt;= &#39;2^exponent&#39; then </span></div><div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160;        <span class="comment">// because base is &gt;= 2 then we&#39;ve got:</span></div><div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160;        <span class="comment">// &#39;new_exp_&#39; must be smaller or equal &#39;new_exp&#39;</span></div><div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160;        <span class="comment">// and we can pass it into the Int&lt;exp&gt; type</span></div><div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160;        <span class="comment">// (in fact we&#39;re using a greater type then it&#39;ll be ok)</span></div><div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160;        c += new_exp_.ToInt(new_exp);</div><div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160;</div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160;        <span class="comment">// base_ = base</span></div><div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160;        Big&lt;exp+1,man&gt; base_(conv.base);</div><div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160;</div><div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160;        <span class="comment">// base_ = base_ ^ new_exp_</span></div><div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160;        c += base_.Pow( new_exp_ ); <span class="comment">// use new_exp_ so Pow(Big&lt;&gt; &amp;) version will be used</span></div><div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160;        <span class="comment">// if we hadn&#39;t used a bigger type than &#39;Big&lt;exp,man&gt;&#39; then the result</span></div><div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160;        <span class="comment">// of this formula &#39;Pow(...)&#39; would have been with an overflow</span></div><div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160;</div><div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160;        <span class="comment">// temp = mantissa * 2^exponent / base_^new_exp_</span></div><div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160;        Big&lt;exp+1,man&gt; temp;</div><div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160;        temp.info = 0;</div><div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160;        temp.mantissa = mantissa;</div><div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160;        temp.exponent = exponent;</div><div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160;        c += temp.<a class="code" href="classttmath_1_1_int.html#a2bc659d2f8aa94cf17ee5650d06119f2">Div</a>(base_);</div><div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160;</div><div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160;        <span class="comment">// moving all bits of the mantissa into the right </span></div><div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160;        <span class="comment">// (how many times to move depend on the exponent)</span></div><div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160;        c += temp.ToString_MoveMantissaIntoRight();</div><div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;</div><div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160;        <span class="comment">// because we took &#39;new_exp&#39; as small as it was</span></div><div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;        <span class="comment">// possible ([log base (2^exponent)] + 1) that after the division </span></div><div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160;        <span class="comment">// (temp.Div( base_ )) the value of exponent should be equal zero or </span></div><div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160;        <span class="comment">// minimum smaller than zero then we&#39;ve got the mantissa which has </span></div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;        <span class="comment">// maximum valid bits</span></div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160;        temp.mantissa.ToString(new_man, conv.base);</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160;</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>() )</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160;        {</div><div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160;            <span class="comment">// making sure the new mantissa will be without fraction (integer)</span></div><div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160;            ToString_CheckMantissaInteger&lt;string_type, char_type&gt;(new_man, new_exp);</div><div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160;        }</div><div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160;        <span class="keywordflow">if</span>( conv.base_round )</div><div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160;        {</div><div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160;            c += ToString_BaseRound&lt;string_type, char_type&gt;(new_man, conv, new_exp);</div><div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160;        }</div><div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>&#160;</div><div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160;    }</div><div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160;</div><div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160;<span class="comment">        this method calculates the logarithm</span></div><div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160;<span class="comment">        it is used by ToString_CreateNewMantissaAndExponent() method</span></div><div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160;<span class="comment">        it&#39;s not too complicated</span></div><div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160;<span class="comment">        because x=+1*2^exponent (mantissa is one) then during the calculation</span></div><div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160;<span class="comment">        the Ln(x) will not be making the long formula from LnSurrounding1()</span></div><div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160;<span class="comment">        and only we have to calculate &#39;Ln(base)&#39; but it&#39;ll be calculated</span></div><div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160;<span class="comment">        only once, the next time we will get it from the &#39;history&#39;</span></div><div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160;<span class="comment">        x is greater than 0</span></div><div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160;<span class="comment">        base is in &lt;2,16&gt; range</span></div><div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_Log(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; x, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base)</div><div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>&#160;    {</div><div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160;        <a class="code" href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a>( x )</div><div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160;        TTMATH_ASSERT( base&gt;=2 &amp;&amp; base&lt;=16 )</div><div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160;</div><div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>&#160;        <a class="code" href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab">Big</a>&lt;exp,man&gt; temp;</div><div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>&#160;        temp.<a class="code" href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">SetOne</a>();</div><div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>&#160;</div><div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160;        if( x == temp )</div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160;        {</div><div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160;            <span class="comment">// log(1) is 0</span></div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160;</div><div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160;        }</div><div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160;</div><div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160;        <span class="comment">// there can be only a carry</span></div><div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160;        <span class="comment">// because the &#39;x&#39; is in &#39;1+2*exponent&#39; form then </span></div><div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160;        <span class="comment">// the long formula from LnSurrounding1() will not be calculated</span></div><div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>&#160;        <span class="comment">// (LnSurrounding1() will return one immediately)</span></div><div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = <a class="code" href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">Ln</a>(x);</div><div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160;</div><div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160;        <span class="keywordflow">if</span>( base==10 &amp;&amp; man&lt;=<a class="code" href="ttmathtypes_8h.html#a0a7022271658d24d9da02c1f01be16bc">TTMATH_BUILTIN_VARIABLES_SIZE</a> )</div><div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160;        {</div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160;            <span class="comment">// for the base equal 10 we&#39;re using SetLn10() instead of calculating it</span></div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160;            <span class="comment">// (only if we have the constant sufficient big)</span></div><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160;            temp.SetLn10();</div><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160;        }</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;        {</div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160;            c += ToString_LogBase(base, temp);</div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;        }</div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160;</div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>( temp );</div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160;</div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160;    }</div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160;</div><div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160;</div><div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>&#160;<span class="preprocessor">#ifndef TTMATH_MULTITHREADS</span></div><div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160;<span class="comment">        this method calculates the logarithm of &#39;base&#39;</span></div><div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160;<span class="comment">        it&#39;s used in single thread environment</span></div><div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_LogBase(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base, Big&lt;exp,man&gt; &amp; result)</div><div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160;    {</div><div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160;        TTMATH_ASSERT( base&gt;=2 &amp;&amp; base&lt;=16 )</div><div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160;</div><div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160;        <span class="comment">// this guardians are initialized before the program runs (static POD types)</span></div><div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160;        static <span class="keywordtype">int</span> guardians[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};</div><div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160;        <span class="keyword">static</span> Big&lt;exp,man&gt; log_history[15];</div><div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> index = base - 2;</div><div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160;    </div><div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160;        <span class="keywordflow">if</span>( guardians[index] == 0 )</div><div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160;        {</div><div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160;            Big&lt;exp,man&gt; base_(base);</div><div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160;            c += log_history[index].Ln(base_);</div><div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160;            guardians[index] = 1;</div><div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160;        }</div><div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160;</div><div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160;        result = log_history[index];</div><div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160;</div><div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160;    }</div><div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160;</div><div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160;<span class="comment">        this method calculates the logarithm of &#39;base&#39;</span></div><div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160;<span class="comment">        it&#39;s used in multi-thread environment</span></div><div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_LogBase(<a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base, Big&lt;exp,man&gt; &amp; result)</div><div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160;    {</div><div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160;        TTMATH_ASSERT( base&gt;=2 &amp;&amp; base&lt;=16 )</div><div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160;</div><div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160;        <span class="comment">// this guardians are initialized before the program runs (static POD types)</span></div><div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160;        volatile static sig_atomic_t guardians[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};</div><div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160;        <span class="keyword">static</span> Big&lt;exp,man&gt; * plog_history;</div><div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> index = base - 2;</div><div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160;    </div><div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160;        <span class="comment">// double-checked locking</span></div><div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160;        <span class="keywordflow">if</span>( guardians[index] == 0 )</div><div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160;        {</div><div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160;            ThreadLock thread_lock;</div><div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160;</div><div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160;            <span class="comment">// locking</span></div><div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160;            <span class="keywordflow">if</span>( thread_lock.Lock() )</div><div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160;            {</div><div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160;                <span class="keyword">static</span> Big&lt;exp,man&gt; log_history[15];</div><div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160;</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160;                <span class="keywordflow">if</span>( guardians[index] == 0 )</div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;                {</div><div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160;                    plog_history = log_history;</div><div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160;                </div><div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160;                    Big&lt;exp,man&gt; base_(base);</div><div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160;                    c += log_history[index].Ln(base_);</div><div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160;                    guardians[index] = 1;</div><div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160;                }</div><div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160;            }</div><div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160;            {</div><div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160;                <span class="comment">// there was a problem with locking, we store the result directly in &#39;result&#39; object</span></div><div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160;                Big&lt;exp,man&gt; base_(base);</div><div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160;                c += result.Ln(base_);</div><div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160;                </div><div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160;            <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160;            }</div><div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160;</div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160;            <span class="comment">// automatically unlocking</span></div><div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160;        }</div><div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160;</div><div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160;        result = plog_history[index];</div><div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160;</div><div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160;    }</div><div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160;</div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160;<span class="comment">        an auxiliary method for converting into the string (private)</span></div><div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160;<span class="comment">        this method moving all bits from mantissa into the right side</span></div><div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160;<span class="comment">        the exponent tell us how many times moving (the exponent is &lt;=0)</span></div><div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_MoveMantissaIntoRight()</div><div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160;    {</div><div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160;        <span class="keywordflow">if</span>( exponent.<a class="code" href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">IsZero</a>() )</div><div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160;        </div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160;        <span class="comment">// exponent can&#39;t be greater than zero</span></div><div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160;        <span class="comment">// because we would cat the highest bits of the mantissa</span></div><div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160;        <span class="keywordflow">if</span>( !exponent.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160;</div><div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160;</div><div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160;        {</div><div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160;            <span class="comment">// if &#39;exponent&#39; is &lt;= than &#39;-sint(man*TTMATH_BITS_PER_UINT)&#39;</span></div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160;            <span class="comment">// it means that we must cut the whole mantissa</span></div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160;            <span class="comment">// (there&#39;ll not be any of the valid bits)</span></div><div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160;        }</div><div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160;</div><div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160;        <span class="comment">// e will be from (-man*TTMATH_BITS_PER_UINT, 0&gt;</span></div><div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = -( exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>() );</div><div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">Rcr</a>(e,0);</div><div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160;</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160;    }</div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160;</div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160;<span class="comment">        a special method similar to the &#39;ToString_CreateNewMantissaAndExponent&#39;</span></div><div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160;<span class="comment">        when the &#39;base&#39; is equal 2</span></div><div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160;<span class="comment">        we use it because if base is equal 2 we don&#39;t have to make those</span></div><div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160;<span class="comment">        complicated calculations and the output is directly from the source</span></div><div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160;<span class="comment">        (there will not be any small distortions)</span></div><div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type&gt;</div><div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaAndExponent_Base2(   string_type &amp; new_man,</div><div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160;                                                        Int&lt;exp+1&gt; &amp; new_exp     )<span class="keyword"> const</span></div><div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160;        <span class="keywordflow">for</span>( <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> i=man-1 ; i&gt;=0 ; --i )</div><div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160;        {</div><div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> value = mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i]; </div><div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160;</div><div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160;            <span class="keywordflow">for</span>( <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> bit=0 ; bit&lt;<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> ; ++bit )</div><div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160;            {</div><div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160;                <span class="keywordflow">if</span>( (value &amp; <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a>) != 0 )</div><div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160;                    new_man += <span class="charliteral">&#39;1&#39;</span>;</div><div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160;                    new_man += <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160;</div><div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160;                value &lt;&lt;= 1;</div><div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160;            }</div><div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160;        }</div><div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160;</div><div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160;        new_exp = exponent;</div><div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160;</div><div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160;    }</div><div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160;</div><div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160;<span class="comment">        a special method used to calculate the new mantissa and exponent</span></div><div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160;<span class="comment">        when the &#39;base&#39; is equal 4, 8 or 16</span></div><div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160;<span class="comment">        -  when base is 4 then bits is 2</span></div><div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160;<span class="comment">        -  when base is 8 then bits is 3</span></div><div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160;<span class="comment">        -  when base is 16 then bits is 4</span></div><div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160;<span class="comment">        (and the algorithm can be used with a base greater than 16)</span></div><div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type&gt;</div><div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaAndExponent_BasePow2(    string_type &amp; new_man,</div><div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160;                                                            Int&lt;exp+1&gt; &amp; new_exp,</div><div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160;                                                            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> bits)<span class="keyword"> const</span></div><div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> move;                          <span class="comment">// how many times move the mantissa</span></div><div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160;        UInt&lt;man+1&gt; man_temp(mantissa);     <span class="comment">// man+1 for moving</span></div><div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160;        new_exp = exponent;</div><div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160;        new_exp.<a class="code" href="classttmath_1_1_int.html#a6d81ced6d4f5183287a316a9d45d3198">DivInt</a>((<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>)bits, move);</div><div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160;</div><div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160;        <span class="keywordflow">if</span>( move != 0 )</div><div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160;        {</div><div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160;            <span class="comment">// we&#39;re moving the man_temp to left-hand side</span></div><div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160;            <span class="keywordflow">if</span>( move &lt; 0 )</div><div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160;            {</div><div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160;                move = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(bits) + move;</div><div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160;                new_exp.SubOne();           <span class="comment">// when move is &lt; than 0 then new_exp is &lt; 0 too</span></div><div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160;            }</div><div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160;</div><div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160;            man_temp.Rcl(move);</div><div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160;        }</div><div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160;</div><div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160;</div><div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160;        <span class="keywordflow">if</span>( bits == 3 )</div><div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160;        {</div><div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160;            <span class="comment">// base 8</span></div><div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160;            <span class="comment">// now &#39;move&#39; is greater than or equal 0</span></div><div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> len = man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> + move;</div><div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_Base8(new_man, man_temp, len, bits);</div><div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160;        }</div><div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160;        {</div><div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160;            <span class="comment">// base 4 or 16</span></div><div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160;            <span class="keywordflow">return</span> ToString_CreateNewMantissaAndExponent_Base4or16(new_man, man_temp, bits);</div><div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160;        }</div><div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160;    }</div><div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160;</div><div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160;<span class="comment">        a special method used to calculate the new mantissa</span></div><div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160;<span class="comment">        when the &#39;base&#39; is equal 8</span></div><div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160;<span class="comment">        bits is always 3</span></div><div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160;<span class="comment">        we can use this algorithm when the base is 4 or 16 too</span></div><div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160;<span class="comment">        but we have a faster method ToString_CreateNewMantissaAndExponent_Base4or16()</span></div><div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type&gt;</div><div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaAndExponent_Base8(   string_type &amp; new_man,</div><div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160;                                                        UInt&lt;man+1&gt; &amp; man_temp,</div><div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160;                                                        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> len,</div><div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160;                                                        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> bits)<span class="keyword"> const</span></div><div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> shift = <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - bits;</div><div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mask  = <a class="code" href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a> &gt;&gt; shift;</div><div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i;</div><div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;</div><div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160;        <span class="keywordflow">for</span>( i=0 ; i&lt;len ; i+=bits )</div><div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;        {</div><div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> digit = man_temp.table[0] &amp; mask;</div><div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160;            new_man.insert(new_man.begin(), static_cast&lt;char&gt;(<a class="code" href="classttmath_1_1_misc.html#a93a49aa7775f27e51feccc665c537277">Misc::DigitToChar</a>(digit)));</div><div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160;</div><div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160;            man_temp.Rcr(bits);</div><div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160;        }</div><div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;</div><div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160;        TTMATH_ASSERT( man_temp.IsZero() )</div><div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;</div><div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160;    }</div><div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160;</div><div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160;<span class="comment">        a special method used to calculate the new mantissa</span></div><div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160;<span class="comment">        when the &#39;base&#39; is equal 4 or 16</span></div><div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;<span class="comment">        when the base is equal 4 or 16 the bits is 2 or 4</span></div><div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160;<span class="comment">        and because TTMATH_BITS_PER_UINT (32 or 64) is divisible by 2 (or 4)</span></div><div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160;<span class="comment">        then we can get digits from the end of our mantissa</span></div><div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type&gt;</div><div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_CreateNewMantissaAndExponent_Base4or16(   string_type &amp; new_man,</div><div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160;                                                            UInt&lt;man+1&gt; &amp; man_temp,</div><div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160;                                                            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> bits)<span class="keyword"> const</span></div><div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160;        TTMATH_ASSERT( <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> % 2 == 0 )</div><div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160;        TTMATH_ASSERT( <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> % 4 == 0 )</div><div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160;</div><div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> shift = <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - bits;</div><div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mask  = <a class="code" href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a> &lt;&lt; shift;</div><div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> digit;</div><div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160;</div><div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160;         <span class="comment">// table[man] - last word - is different from zero if we moved man_temp</span></div><div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160;        digit = man_temp.table[man];</div><div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160;</div><div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160;        if( digit != 0 )</div><div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160;            new_man += static_cast&lt;<span class="keywordtype">char</span>&gt;(Misc::DigitToChar(digit));</div><div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160;</div><div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160;</div><div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160;        for( <span class="keywordtype">int</span> i=man-1 ; i&gt;=0 ; --i )</div><div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160;        {</div><div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> shift_local = shift;</div><div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> mask_local  = mask;</div><div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160;</div><div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160;            <span class="keywordflow">while</span>( mask_local != 0 )</div><div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;            {</div><div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160;                digit = man_temp.table[i] &amp; mask_local;</div><div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160;</div><div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160;                <span class="keywordflow">if</span>( shift_local != 0 )</div><div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160;                    digit = digit &gt;&gt; shift_local;</div><div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160;</div><div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160;                new_man    += static_cast&lt;char&gt;(<a class="code" href="classttmath_1_1_misc.html#a93a49aa7775f27e51feccc665c537277">Misc::DigitToChar</a>(digit));</div><div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160;                mask_local  = mask_local &gt;&gt; bits;</div><div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160;                shift_local = shift_local - bits;</div><div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160;            }</div><div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160;        }</div><div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160;</div><div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160;    }</div><div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160;</div><div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160;    <span class="keywordtype">bool</span> ToString_RoundMantissaWouldBeInteger(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv, Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160;        <span class="comment">// if new_exp is greater or equal to zero then we have an integer value,</span></div><div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160;        <span class="comment">// if new_exp is equal -1 then we have only one digit after the comma</span></div><div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160;        <span class="comment">// and after rounding it would be an integer value</span></div><div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160;        <span class="keywordflow">if</span>( !new_exp.IsSign() || new_exp == -1 )</div><div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160;</div><div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160;        <span class="keywordflow">if</span>( new_man.size() &gt;= <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a> || new_man.size() &lt; 2 )</div><div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// oops, the mantissa is too large for calculating (or too small) - we are not doing the base rounding</span></div><div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160;        </div><div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i = 0;</div><div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160;        char_type digit;</div><div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160;</div><div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160;        <span class="keywordflow">if</span>( new_exp &gt;= -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(new_man.size()) )</div><div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160;        {</div><div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> new_exp_abs = -new_exp.ToInt();</div><div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160;            i = new_man.size() - new_exp_abs; <span class="comment">// start from the first digit after the comma operator</span></div><div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160;        }</div><div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160;        </div><div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(new_man[new_man.size()-1]) &gt;= conv.base/2 )</div><div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160;        {</div><div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160;            <span class="keywordflow">if</span>( new_exp &lt; -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(new_man.size()) )</div><div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160;            {</div><div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160;                <span class="comment">// there are some zeroes after the comma operator</span></div><div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160;                <span class="comment">// (between the comma and the first digit from the mantissa)</span></div><div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>&#160;                <span class="comment">// and the result value will never be an integer</span></div><div class="line"><a name="l04466"></a><span class="lineno"> 4466</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>&#160;            }</div><div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160;</div><div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160;            digit = static_cast&lt;char_type&gt;( <a class="code" href="classttmath_1_1_misc.html#a93a49aa7775f27e51feccc665c537277">Misc::DigitToChar</a>(conv.base-1) );</div><div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160;        }</div><div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160;        {</div><div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160;            digit = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160;        }</div><div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160;</div><div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160;        <span class="keywordflow">for</span>( ; i &lt; new_man.size()-1 ; ++i)</div><div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160;            <span class="keywordflow">if</span>( new_man[i] != digit )</div><div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// it will not be an integer</span></div><div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160;</div><div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// it will be integer after rounding</span></div><div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160;    }</div><div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160;</div><div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160;<span class="comment">        (when this is integer)</span></div><div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160;<span class="comment">        after floating point calculating the new mantissa can consist of some fraction</span></div><div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160;<span class="comment">        so if our value is integer we should check the new mantissa</span></div><div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>&#160;<span class="comment">        (after the decimal point there should be only zeroes)</span></div><div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160;<span class="comment">        </span></div><div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160;<span class="comment">        often this is a last digit different from zero</span></div><div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160;<span class="comment">        ToString_BaseRound would not get rid of it because the method make a test against </span></div><div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160;<span class="comment">        an integer value (ToString_RoundMantissaWouldBeInteger) and returns immediately</span></div><div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04496"></a><span class="lineno"> 4496</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160;    <span class="keywordtype">void</span> ToString_CheckMantissaInteger(string_type &amp; new_man, <span class="keyword">const</span> Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>&#160;        <span class="keywordflow">if</span>( !new_exp.IsSign() )</div><div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160;            <span class="keywordflow">return</span>; <span class="comment">// return if new_exp &gt;= 0</span></div><div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>&#160;        </div><div class="line"><a name="l04502"></a><span class="lineno"> 4502</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i = 0;</div><div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> man_size = new_man.size();</div><div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160;</div><div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160;        <span class="keywordflow">if</span>( man_size &gt;= <a class="code" href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a> )</div><div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160;            <span class="keywordflow">return</span>; <span class="comment">// ops, the mantissa is too long</span></div><div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160;</div><div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> sman_size = -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man_size);</div><div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160;</div><div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160;        <span class="keywordflow">if</span>( new_exp &gt;= sman_size )</div><div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160;        {</div><div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160;            <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = new_exp.ToInt();</div><div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160;            e = -e;</div><div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>&#160;            <span class="comment">// now e means how many last digits from the mantissa should be equal zero</span></div><div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>&#160;</div><div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>&#160;            i = man_size - <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>(e);</div><div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160;        }</div><div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160;</div><div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160;        <span class="keywordflow">for</span>( ; i&lt;man_size ; ++i)</div><div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160;            new_man[i] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160;    }</div><div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160;</div><div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04527"></a><span class="lineno"> 4527</span>&#160;<span class="comment">        this method is used for base!=2, base!=4, base!=8 and base!=16</span></div><div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160;<span class="comment">        we do the rounding when the value has fraction (is not an integer)</span></div><div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_BaseRound(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv, Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160;        <span class="comment">// we must have minimum two characters</span></div><div class="line"><a name="l04534"></a><span class="lineno"> 4534</span>&#160;        <span class="keywordflow">if</span>( new_man.size() &lt; 2 )</div><div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160;</div><div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160;        <span class="comment">// assert that there will not be an integer after rounding</span></div><div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160;        <span class="keywordflow">if</span>( ToString_RoundMantissaWouldBeInteger&lt;string_type, char_type&gt;(new_man, conv, new_exp) )</div><div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160;</div><div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160;        <span class="keyword">typename</span> string_type::size_type i = new_man.length() - 1;</div><div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160;</div><div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160;        <span class="comment">// we&#39;re erasing the last character</span></div><div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> digit = <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>( new_man[i] );</div><div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160;        new_man.erase(i, 1);</div><div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = new_exp.AddOne();</div><div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160;</div><div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160;        <span class="comment">// if the last character is greater or equal &#39;base/2&#39;</span></div><div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160;        <span class="comment">// we are adding one into the new mantissa</span></div><div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160;        <span class="keywordflow">if</span>( digit &gt;= conv.base / 2 )</div><div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160;            ToString_RoundMantissa_AddOneIntoMantissa&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160;</div><div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160;    }</div><div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160;    </div><div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160;<span class="comment">        this method addes one into the new mantissa</span></div><div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160;    <span class="keywordtype">void</span> ToString_RoundMantissa_AddOneIntoMantissa(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160;        <span class="keywordflow">if</span>( new_man.empty() )</div><div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160;</div><div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> i = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>( new_man.length() ) - 1;</div><div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160;        <span class="keywordtype">bool</span> was_carry = <span class="keyword">true</span>;</div><div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160;</div><div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160;        <span class="keywordflow">for</span>( ; i&gt;=0 &amp;&amp; was_carry ; --i )</div><div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160;        {</div><div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160;            <span class="comment">// we can have the comma as well because</span></div><div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>&#160;            <span class="comment">// we&#39;re using this method later in ToString_CorrectDigitsAfterComma_Round()</span></div><div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>&#160;            <span class="comment">// (we&#39;re only ignoring it)</span></div><div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>&#160;            <span class="keywordflow">if</span>( new_man[i] == static_cast&lt;char_type&gt;(conv.comma) )</div><div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>&#160;</div><div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>&#160;            <span class="comment">// we&#39;re adding one</span></div><div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> digit = <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>( new_man[i] ) + 1;</div><div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>&#160;</div><div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>&#160;            <span class="keywordflow">if</span>( digit == conv.base )</div><div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>&#160;                digit = 0;</div><div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>&#160;                was_carry = <span class="keyword">false</span>;</div><div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>&#160;</div><div class="line"><a name="l04587"></a><span class="lineno"> 4587</span>&#160;            new_man[i] = static_cast&lt;char_type&gt;( <a class="code" href="classttmath_1_1_misc.html#a93a49aa7775f27e51feccc665c537277">Misc::DigitToChar</a>(digit) );</div><div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>&#160;        }</div><div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160;</div><div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160;        <span class="keywordflow">if</span>( i&lt;0 &amp;&amp; was_carry )</div><div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>&#160;            new_man.insert( new_man.begin() , <span class="charliteral">&#39;1&#39;</span> );</div><div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>&#160;    }</div><div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>&#160;</div><div class="line"><a name="l04594"></a><span class="lineno"> 4594</span>&#160;</div><div class="line"><a name="l04595"></a><span class="lineno"> 4595</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04596"></a><span class="lineno"> 4596</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04597"></a><span class="lineno"> 4597</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04598"></a><span class="lineno"> 4598</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160;<span class="comment">        this method sets the comma operator and/or puts the exponent</span></div><div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160;<span class="comment">        into the string</span></div><div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> ToString_SetCommaAndExponent(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv, Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> carry = 0;</div><div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160;</div><div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>&#160;        <span class="keywordflow">if</span>( new_man.empty() )</div><div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>&#160;            <span class="keywordflow">return</span> carry;</div><div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>&#160;</div><div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>&#160;        Int&lt;exp+1&gt; scientific_exp( new_exp );</div><div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>&#160;</div><div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>&#160;        <span class="comment">// &#39;new_exp&#39; depends on the &#39;new_man&#39; which is stored like this e.g:</span></div><div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>&#160;        <span class="comment">//  32342343234 (the comma is at the end)</span></div><div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160;        <span class="comment">// we&#39;d like to show it in this way:</span></div><div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>&#160;        <span class="comment">//  3.2342343234 (the &#39;scientific_exp&#39; is connected with this example)</span></div><div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>&#160;</div><div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> offset = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>( new_man.length() ) - 1;</div><div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>&#160;        carry += scientific_exp.Add( offset );</div><div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>&#160;        <span class="comment">// there shouldn&#39;t have been a carry because we&#39;re using</span></div><div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>&#160;        <span class="comment">// a greater type -- &#39;Int&lt;exp+1&gt;&#39; instead of &#39;Int&lt;exp&gt;&#39;</span></div><div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>&#160;</div><div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>&#160;        <span class="keywordtype">bool</span> print_scientific = conv.scient;</div><div class="line"><a name="l04623"></a><span class="lineno"> 4623</span>&#160;</div><div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>&#160;        <span class="keywordflow">if</span>( !print_scientific )</div><div class="line"><a name="l04625"></a><span class="lineno"> 4625</span>&#160;        {</div><div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>&#160;            <span class="keywordflow">if</span>( scientific_exp &gt; conv.scient_from || scientific_exp &lt; -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(conv.scient_from) )</div><div class="line"><a name="l04627"></a><span class="lineno"> 4627</span>&#160;                print_scientific = <span class="keyword">true</span>;</div><div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>&#160;        }</div><div class="line"><a name="l04629"></a><span class="lineno"> 4629</span>&#160;</div><div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>&#160;        <span class="keywordflow">if</span>( !print_scientific )</div><div class="line"><a name="l04631"></a><span class="lineno"> 4631</span>&#160;            ToString_SetCommaAndExponent_Normal&lt;string_type, char_type&gt;(new_man, conv, new_exp);</div><div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04633"></a><span class="lineno"> 4633</span>&#160;            <span class="comment">// we&#39;re passing the &#39;scientific_exp&#39; instead of &#39;new_exp&#39; here</span></div><div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>&#160;            ToString_SetCommaAndExponent_Scientific&lt;string_type, char_type&gt;(new_man, conv, scientific_exp);</div><div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>&#160;</div><div class="line"><a name="l04636"></a><span class="lineno"> 4636</span>&#160;    <span class="keywordflow">return</span> (carry==0)? 0 : 1;</div><div class="line"><a name="l04637"></a><span class="lineno"> 4637</span>&#160;    }</div><div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>&#160;</div><div class="line"><a name="l04639"></a><span class="lineno"> 4639</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04640"></a><span class="lineno"> 4640</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04641"></a><span class="lineno"> 4641</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04642"></a><span class="lineno"> 4642</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04643"></a><span class="lineno"> 4643</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04644"></a><span class="lineno"> 4644</span>&#160;    <span class="keywordtype">void</span> ToString_SetCommaAndExponent_Normal(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv, Int&lt;exp+1&gt; &amp; new_exp )<span class="keyword"> const</span></div><div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04646"></a><span class="lineno"> 4646</span>&#160;        <span class="keywordflow">if</span>( !new_exp.IsSign() ) <span class="comment">// it means: if( new_exp &gt;= 0 )</span></div><div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>&#160;            ToString_SetCommaAndExponent_Normal_AddingZero&lt;string_type, char_type&gt;(new_man, new_exp);</div><div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160;            ToString_SetCommaAndExponent_Normal_SetCommaInside&lt;string_type, char_type&gt;(new_man, conv, new_exp);</div><div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160;</div><div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160;</div><div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160;        ToString_Group_man&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160;    }</div><div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160;</div><div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>&#160;    <span class="keywordtype">void</span> ToString_SetCommaAndExponent_Normal_AddingZero(string_type &amp; new_man,</div><div class="line"><a name="l04661"></a><span class="lineno"> 4661</span>&#160;                                                        Int&lt;exp+1&gt; &amp; new_exp)<span class="keyword"> const</span></div><div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>&#160;        <span class="comment">// we&#39;re adding zero characters at the end</span></div><div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>&#160;        <span class="comment">// &#39;i&#39; will be smaller than &#39;when_scientific&#39; (or equal)</span></div><div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i = new_exp.ToInt();</div><div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>&#160;        </div><div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>&#160;        <span class="keywordflow">if</span>( new_man.length() + i &gt; new_man.capacity() )</div><div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160;            <span class="comment">// about 6 characters more (we&#39;ll need it for the comma or something)</span></div><div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160;            new_man.reserve( new_man.length() + i + 6 );</div><div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160;        </div><div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>&#160;        <span class="keywordflow">for</span>( ; i&gt;0 ; --i)</div><div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>&#160;            new_man += <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l04673"></a><span class="lineno"> 4673</span>&#160;    }</div><div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>&#160;</div><div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04679"></a><span class="lineno"> 4679</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>&#160;    <span class="keywordtype">void</span> ToString_SetCommaAndExponent_Normal_SetCommaInside(</div><div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>&#160;                                                            string_type &amp; new_man,</div><div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>&#160;                                                            <span class="keyword">const</span> Conv &amp; conv,</div><div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>&#160;                                                            Int&lt;exp+1&gt; &amp; new_exp )<span class="keyword"> const</span></div><div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04685"></a><span class="lineno"> 4685</span>&#160;        <span class="comment">// new_exp is &lt; 0 </span></div><div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>&#160;</div><div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> new_man_len = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(new_man.length()); <span class="comment">// &#39;new_man_len&#39; with a sign</span></div><div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = -( new_exp.ToInt() ); <span class="comment">// &#39;e&#39; will be positive</span></div><div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>&#160;</div><div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>&#160;        <span class="keywordflow">if</span>( new_exp &gt; -new_man_len )</div><div class="line"><a name="l04691"></a><span class="lineno"> 4691</span>&#160;        {</div><div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>&#160;            <span class="comment">// we&#39;re setting the comma within the mantissa</span></div><div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>&#160;            </div><div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>&#160;            <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> index = new_man_len - e;</div><div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>&#160;            new_man.insert( new_man.begin() + index, static_cast&lt;char_type&gt;(conv.comma));</div><div class="line"><a name="l04696"></a><span class="lineno"> 4696</span>&#160;        }</div><div class="line"><a name="l04697"></a><span class="lineno"> 4697</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160;        {</div><div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160;            <span class="comment">// we&#39;re adding zero characters before the mantissa</span></div><div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>&#160;</div><div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> how_many = e - new_man_len;</div><div class="line"><a name="l04702"></a><span class="lineno"> 4702</span>&#160;            string_type man_temp(how_many+1, <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>&#160;</div><div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>&#160;            man_temp.insert( man_temp.begin()+1, static_cast&lt;char_type&gt;(conv.comma));</div><div class="line"><a name="l04705"></a><span class="lineno"> 4705</span>&#160;            new_man.insert(0, man_temp);</div><div class="line"><a name="l04706"></a><span class="lineno"> 4706</span>&#160;        }</div><div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>&#160;</div><div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>&#160;        ToString_CorrectDigitsAfterComma&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>&#160;    }</div><div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>&#160;</div><div class="line"><a name="l04711"></a><span class="lineno"> 4711</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04712"></a><span class="lineno"> 4712</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04713"></a><span class="lineno"> 4713</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04714"></a><span class="lineno"> 4714</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04715"></a><span class="lineno"> 4715</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04716"></a><span class="lineno"> 4716</span>&#160;    <span class="keywordtype">void</span> ToString_SetCommaAndExponent_Scientific(   string_type &amp; new_man,</div><div class="line"><a name="l04717"></a><span class="lineno"> 4717</span>&#160;                                                    <span class="keyword">const</span> Conv &amp; conv,</div><div class="line"><a name="l04718"></a><span class="lineno"> 4718</span>&#160;                                                    Int&lt;exp+1&gt; &amp; scientific_exp )<span class="keyword"> const</span></div><div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>&#160;        <span class="keywordflow">if</span>( new_man.empty() )</div><div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>&#160;        </div><div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>&#160;        <span class="keywordflow">if</span>( new_man.size() &gt; 1 )</div><div class="line"><a name="l04724"></a><span class="lineno"> 4724</span>&#160;        {</div><div class="line"><a name="l04725"></a><span class="lineno"> 4725</span>&#160;            new_man.insert( new_man.begin()+1, static_cast&lt;char_type&gt;(conv.comma) );</div><div class="line"><a name="l04726"></a><span class="lineno"> 4726</span>&#160;            ToString_CorrectDigitsAfterComma&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04727"></a><span class="lineno"> 4727</span>&#160;        }</div><div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>&#160;</div><div class="line"><a name="l04729"></a><span class="lineno"> 4729</span>&#160;        ToString_Group_man&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04730"></a><span class="lineno"> 4730</span>&#160;</div><div class="line"><a name="l04731"></a><span class="lineno"> 4731</span>&#160;        <span class="keywordflow">if</span>( conv.base == 10 )</div><div class="line"><a name="l04732"></a><span class="lineno"> 4732</span>&#160;        {</div><div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>&#160;            new_man += <span class="charliteral">&#39;e&#39;</span>;</div><div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>&#160;</div><div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>&#160;            <span class="keywordflow">if</span>( !scientific_exp.IsSign() )</div><div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>&#160;                new_man += <span class="charliteral">&#39;+&#39;</span>;</div><div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>&#160;        }</div><div class="line"><a name="l04738"></a><span class="lineno"> 4738</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l04739"></a><span class="lineno"> 4739</span>&#160;        {</div><div class="line"><a name="l04740"></a><span class="lineno"> 4740</span>&#160;            <span class="comment">// the 10 here is meant as the base &#39;base&#39;</span></div><div class="line"><a name="l04741"></a><span class="lineno"> 4741</span>&#160;            <span class="comment">// (no matter which &#39;base&#39; we&#39;re using there&#39;ll always be 10 here)</span></div><div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>&#160;            <a class="code" href="classttmath_1_1_misc.html#acfe3356acfeb0a444481e6d6ccb5ba78">Misc::AddString</a>(new_man, <span class="stringliteral">&quot;*10^&quot;</span>);</div><div class="line"><a name="l04743"></a><span class="lineno"> 4743</span>&#160;        }</div><div class="line"><a name="l04744"></a><span class="lineno"> 4744</span>&#160;</div><div class="line"><a name="l04745"></a><span class="lineno"> 4745</span>&#160;        string_type temp_exp;</div><div class="line"><a name="l04746"></a><span class="lineno"> 4746</span>&#160;        scientific_exp.ToString( temp_exp, conv.base );</div><div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>&#160;</div><div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>&#160;        new_man += temp_exp;</div><div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>&#160;    }</div><div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>&#160;</div><div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04756"></a><span class="lineno"> 4756</span>&#160;    <span class="keywordtype">void</span> ToString_Group_man(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l04757"></a><span class="lineno"> 4757</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04758"></a><span class="lineno"> 4758</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">typename</span> string_type::size_type StrSize;</div><div class="line"><a name="l04759"></a><span class="lineno"> 4759</span>&#160;</div><div class="line"><a name="l04760"></a><span class="lineno"> 4760</span>&#160;        <span class="keywordflow">if</span>( conv.group == 0 )</div><div class="line"><a name="l04761"></a><span class="lineno"> 4761</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04762"></a><span class="lineno"> 4762</span>&#160;</div><div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>&#160;        <span class="comment">// first we&#39;re looking for the comma operator</span></div><div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>&#160;        StrSize index = new_man.find(static_cast&lt;char_type&gt;(conv.comma), 0);</div><div class="line"><a name="l04765"></a><span class="lineno"> 4765</span>&#160;</div><div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>&#160;        <span class="keywordflow">if</span>( index == string_type::npos )</div><div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160;            index = new_man.size(); </div><div class="line"><a name="l04768"></a><span class="lineno"> 4768</span>&#160;</div><div class="line"><a name="l04769"></a><span class="lineno"> 4769</span>&#160;        ToString_Group_man_before_comma&lt;string_type, char_type&gt;(new_man, conv, index);</div><div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>&#160;        ToString_Group_man_after_comma&lt;string_type, char_type&gt;(new_man, conv, index+1);</div><div class="line"><a name="l04771"></a><span class="lineno"> 4771</span>&#160;    }</div><div class="line"><a name="l04772"></a><span class="lineno"> 4772</span>&#160;</div><div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>&#160;</div><div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04778"></a><span class="lineno"> 4778</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160;    <span class="keywordtype">void</span> ToString_Group_man_before_comma(   string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv,</div><div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160;                                            <span class="keyword">typename</span> string_type::size_type &amp; index)<span class="keyword"> const</span></div><div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">typename</span> string_type::size_type StrSize;</div><div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>&#160;</div><div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> group = 0;</div><div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>&#160;        StrSize i = index;</div><div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> group_digits = conv.group_digits;</div><div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>&#160;</div><div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>&#160;        <span class="keywordflow">if</span>( group_digits &lt; 1 )</div><div class="line"><a name="l04789"></a><span class="lineno"> 4789</span>&#160;            group_digits = 1;</div><div class="line"><a name="l04790"></a><span class="lineno"> 4790</span>&#160;</div><div class="line"><a name="l04791"></a><span class="lineno"> 4791</span>&#160;        <span class="comment">// adding group characters before the comma operator</span></div><div class="line"><a name="l04792"></a><span class="lineno"> 4792</span>&#160;        <span class="comment">// i&gt;0 because on the first position we don&#39;t put any additional grouping characters</span></div><div class="line"><a name="l04793"></a><span class="lineno"> 4793</span>&#160;        <span class="keywordflow">for</span>( ; i&gt;0 ; --i, ++group)</div><div class="line"><a name="l04794"></a><span class="lineno"> 4794</span>&#160;        {</div><div class="line"><a name="l04795"></a><span class="lineno"> 4795</span>&#160;            <span class="keywordflow">if</span>( group &gt;= group_digits )</div><div class="line"><a name="l04796"></a><span class="lineno"> 4796</span>&#160;            {</div><div class="line"><a name="l04797"></a><span class="lineno"> 4797</span>&#160;                group = 0;</div><div class="line"><a name="l04798"></a><span class="lineno"> 4798</span>&#160;                new_man.insert(i, 1, static_cast&lt;char_type&gt;(conv.group));</div><div class="line"><a name="l04799"></a><span class="lineno"> 4799</span>&#160;                ++index;</div><div class="line"><a name="l04800"></a><span class="lineno"> 4800</span>&#160;            }</div><div class="line"><a name="l04801"></a><span class="lineno"> 4801</span>&#160;        }</div><div class="line"><a name="l04802"></a><span class="lineno"> 4802</span>&#160;    }</div><div class="line"><a name="l04803"></a><span class="lineno"> 4803</span>&#160;</div><div class="line"><a name="l04804"></a><span class="lineno"> 4804</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04805"></a><span class="lineno"> 4805</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04806"></a><span class="lineno"> 4806</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04807"></a><span class="lineno"> 4807</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>&#160;    <span class="keywordtype">void</span> ToString_Group_man_after_comma(string_type &amp; new_man, <span class="keyword">const</span> Conv &amp; conv,</div><div class="line"><a name="l04810"></a><span class="lineno"> 4810</span>&#160;                                        <span class="keyword">typename</span> string_type::size_type index)<span class="keyword"> const</span></div><div class="line"><a name="l04811"></a><span class="lineno"> 4811</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04812"></a><span class="lineno"> 4812</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> group = 0;</div><div class="line"><a name="l04813"></a><span class="lineno"> 4813</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> group_digits = conv.group_digits;</div><div class="line"><a name="l04814"></a><span class="lineno"> 4814</span>&#160;</div><div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>&#160;        <span class="keywordflow">if</span>( group_digits &lt; 1 )</div><div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>&#160;            group_digits = 1;</div><div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>&#160;</div><div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>&#160;        <span class="keywordflow">for</span>( ; index&lt;new_man.size() ; ++index, ++group)</div><div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>&#160;        {</div><div class="line"><a name="l04820"></a><span class="lineno"> 4820</span>&#160;            <span class="keywordflow">if</span>( group &gt;= group_digits )</div><div class="line"><a name="l04821"></a><span class="lineno"> 4821</span>&#160;            {</div><div class="line"><a name="l04822"></a><span class="lineno"> 4822</span>&#160;                group = 0;</div><div class="line"><a name="l04823"></a><span class="lineno"> 4823</span>&#160;                new_man.insert(index, 1, static_cast&lt;char_type&gt;(conv.group));</div><div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>&#160;                ++index;</div><div class="line"><a name="l04825"></a><span class="lineno"> 4825</span>&#160;            }</div><div class="line"><a name="l04826"></a><span class="lineno"> 4826</span>&#160;        }</div><div class="line"><a name="l04827"></a><span class="lineno"> 4827</span>&#160;    }</div><div class="line"><a name="l04828"></a><span class="lineno"> 4828</span>&#160;</div><div class="line"><a name="l04829"></a><span class="lineno"> 4829</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04830"></a><span class="lineno"> 4830</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04831"></a><span class="lineno"> 4831</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04832"></a><span class="lineno"> 4832</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04833"></a><span class="lineno"> 4833</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04834"></a><span class="lineno"> 4834</span>&#160;    <span class="keywordtype">void</span> ToString_CorrectDigitsAfterComma(  string_type &amp; new_man,</div><div class="line"><a name="l04835"></a><span class="lineno"> 4835</span>&#160;                                            <span class="keyword">const</span> Conv &amp; conv )<span class="keyword"> const</span></div><div class="line"><a name="l04836"></a><span class="lineno"> 4836</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04837"></a><span class="lineno"> 4837</span>&#160;        <span class="keywordflow">if</span>( conv.round &gt;= 0 )</div><div class="line"><a name="l04838"></a><span class="lineno"> 4838</span>&#160;            ToString_CorrectDigitsAfterComma_Round&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04839"></a><span class="lineno"> 4839</span>&#160;</div><div class="line"><a name="l04840"></a><span class="lineno"> 4840</span>&#160;        <span class="keywordflow">if</span>( conv.trim_zeroes )</div><div class="line"><a name="l04841"></a><span class="lineno"> 4841</span>&#160;            ToString_CorrectDigitsAfterComma_CutOffZeroCharacters&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04842"></a><span class="lineno"> 4842</span>&#160;    }</div><div class="line"><a name="l04843"></a><span class="lineno"> 4843</span>&#160;</div><div class="line"><a name="l04844"></a><span class="lineno"> 4844</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04845"></a><span class="lineno"> 4845</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04846"></a><span class="lineno"> 4846</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04847"></a><span class="lineno"> 4847</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04848"></a><span class="lineno"> 4848</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04849"></a><span class="lineno"> 4849</span>&#160;    <span class="keywordtype">void</span> ToString_CorrectDigitsAfterComma_CutOffZeroCharacters(</div><div class="line"><a name="l04850"></a><span class="lineno"> 4850</span>&#160;                                                string_type &amp; new_man,</div><div class="line"><a name="l04851"></a><span class="lineno"> 4851</span>&#160;                                                <span class="keyword">const</span> Conv &amp; conv)<span class="keyword"> const</span></div><div class="line"><a name="l04852"></a><span class="lineno"> 4852</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04853"></a><span class="lineno"> 4853</span>&#160;        <span class="comment">// minimum two characters</span></div><div class="line"><a name="l04854"></a><span class="lineno"> 4854</span>&#160;        <span class="keywordflow">if</span>( new_man.length() &lt; 2 )</div><div class="line"><a name="l04855"></a><span class="lineno"> 4855</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04856"></a><span class="lineno"> 4856</span>&#160;</div><div class="line"><a name="l04857"></a><span class="lineno"> 4857</span>&#160;        <span class="comment">// we&#39;re looking for the index of the last character which is not zero</span></div><div class="line"><a name="l04858"></a><span class="lineno"> 4858</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i = <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a>( new_man.length() ) - 1;</div><div class="line"><a name="l04859"></a><span class="lineno"> 4859</span>&#160;        <span class="keywordflow">for</span>( ; i&gt;0 &amp;&amp; new_man[i]==<span class="charliteral">&#39;0&#39;</span> ; --i );</div><div class="line"><a name="l04860"></a><span class="lineno"> 4860</span>&#160;</div><div class="line"><a name="l04861"></a><span class="lineno"> 4861</span>&#160;        <span class="comment">// if there is another character than zero at the end</span></div><div class="line"><a name="l04862"></a><span class="lineno"> 4862</span>&#160;        <span class="comment">// we&#39;re finishing</span></div><div class="line"><a name="l04863"></a><span class="lineno"> 4863</span>&#160;        <span class="keywordflow">if</span>( i == new_man.length() - 1 )</div><div class="line"><a name="l04864"></a><span class="lineno"> 4864</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04865"></a><span class="lineno"> 4865</span>&#160;</div><div class="line"><a name="l04866"></a><span class="lineno"> 4866</span>&#160;        <span class="comment">// we must have a comma </span></div><div class="line"><a name="l04867"></a><span class="lineno"> 4867</span>&#160;        <span class="comment">// (the comma can be removed by ToString_CorrectDigitsAfterComma_Round</span></div><div class="line"><a name="l04868"></a><span class="lineno"> 4868</span>&#160;        <span class="comment">// which is called before)</span></div><div class="line"><a name="l04869"></a><span class="lineno"> 4869</span>&#160;        <span class="keywordflow">if</span>( new_man.find_last_of(static_cast&lt;char_type&gt;(conv.comma), i) == string_type::npos )</div><div class="line"><a name="l04870"></a><span class="lineno"> 4870</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04871"></a><span class="lineno"> 4871</span>&#160;</div><div class="line"><a name="l04872"></a><span class="lineno"> 4872</span>&#160;        <span class="comment">// if directly before the first zero is the comma operator</span></div><div class="line"><a name="l04873"></a><span class="lineno"> 4873</span>&#160;        <span class="comment">// we&#39;re cutting it as well</span></div><div class="line"><a name="l04874"></a><span class="lineno"> 4874</span>&#160;        <span class="keywordflow">if</span>( i&gt;0 &amp;&amp; new_man[i]==static_cast&lt;char_type&gt;(conv.comma) )</div><div class="line"><a name="l04875"></a><span class="lineno"> 4875</span>&#160;            --i;</div><div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>&#160;</div><div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>&#160;        new_man.erase(i+1, new_man.length()-i-1);</div><div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>&#160;    }</div><div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>&#160;</div><div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>&#160;<span class="comment">        an auxiliary method for converting into the string</span></div><div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04884"></a><span class="lineno"> 4884</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l04885"></a><span class="lineno"> 4885</span>&#160;    <span class="keywordtype">void</span> ToString_CorrectDigitsAfterComma_Round(</div><div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>&#160;                                            string_type &amp; new_man,</div><div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>&#160;                                            <span class="keyword">const</span> Conv &amp; conv )<span class="keyword"> const</span></div><div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04889"></a><span class="lineno"> 4889</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">typename</span> string_type::size_type StrSize;</div><div class="line"><a name="l04890"></a><span class="lineno"> 4890</span>&#160;</div><div class="line"><a name="l04891"></a><span class="lineno"> 4891</span>&#160;        <span class="comment">// first we&#39;re looking for the comma operator</span></div><div class="line"><a name="l04892"></a><span class="lineno"> 4892</span>&#160;        StrSize index = new_man.find(static_cast&lt;char_type&gt;(conv.comma), 0);</div><div class="line"><a name="l04893"></a><span class="lineno"> 4893</span>&#160;</div><div class="line"><a name="l04894"></a><span class="lineno"> 4894</span>&#160;        <span class="keywordflow">if</span>( index == string_type::npos )</div><div class="line"><a name="l04895"></a><span class="lineno"> 4895</span>&#160;            <span class="comment">// nothing was found (actually there can&#39;t be this situation)</span></div><div class="line"><a name="l04896"></a><span class="lineno"> 4896</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04897"></a><span class="lineno"> 4897</span>&#160;</div><div class="line"><a name="l04898"></a><span class="lineno"> 4898</span>&#160;        <span class="comment">// we&#39;re calculating how many digits there are at the end (after the comma)</span></div><div class="line"><a name="l04899"></a><span class="lineno"> 4899</span>&#160;        <span class="comment">// &#39;after_comma&#39; will be greater than zero because at the end</span></div><div class="line"><a name="l04900"></a><span class="lineno"> 4900</span>&#160;        <span class="comment">// we have at least one digit</span></div><div class="line"><a name="l04901"></a><span class="lineno"> 4901</span>&#160;        StrSize after_comma = new_man.length() - index - 1;</div><div class="line"><a name="l04902"></a><span class="lineno"> 4902</span>&#160;</div><div class="line"><a name="l04903"></a><span class="lineno"> 4903</span>&#160;        <span class="comment">// if &#39;max_digit_after_comma&#39; is greater than &#39;after_comma&#39; (or equal)</span></div><div class="line"><a name="l04904"></a><span class="lineno"> 4904</span>&#160;        <span class="comment">// we don&#39;t have anything for cutting</span></div><div class="line"><a name="l04905"></a><span class="lineno"> 4905</span>&#160;        <span class="keywordflow">if</span>( static_cast&lt;StrSize&gt;(conv.round) &gt;= after_comma )</div><div class="line"><a name="l04906"></a><span class="lineno"> 4906</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l04907"></a><span class="lineno"> 4907</span>&#160;</div><div class="line"><a name="l04908"></a><span class="lineno"> 4908</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> last_digit = <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>( new_man[ index + conv.round + 1 ], conv.base );</div><div class="line"><a name="l04909"></a><span class="lineno"> 4909</span>&#160;</div><div class="line"><a name="l04910"></a><span class="lineno"> 4910</span>&#160;        <span class="comment">// we&#39;re cutting the rest of the string</span></div><div class="line"><a name="l04911"></a><span class="lineno"> 4911</span>&#160;        new_man.erase(index + conv.round + 1, after_comma - conv.round);</div><div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>&#160;</div><div class="line"><a name="l04913"></a><span class="lineno"> 4913</span>&#160;        <span class="keywordflow">if</span>( conv.round == 0 )</div><div class="line"><a name="l04914"></a><span class="lineno"> 4914</span>&#160;        {</div><div class="line"><a name="l04915"></a><span class="lineno"> 4915</span>&#160;            <span class="comment">// we&#39;re cutting the comma operator as well</span></div><div class="line"><a name="l04916"></a><span class="lineno"> 4916</span>&#160;            <span class="comment">// (it&#39;s not needed now because we&#39;ve cut the whole rest after the comma)</span></div><div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>&#160;            new_man.erase(index, 1);</div><div class="line"><a name="l04918"></a><span class="lineno"> 4918</span>&#160;        }</div><div class="line"><a name="l04919"></a><span class="lineno"> 4919</span>&#160;</div><div class="line"><a name="l04920"></a><span class="lineno"> 4920</span>&#160;        <span class="keywordflow">if</span>( last_digit &gt;= conv.base / 2 )</div><div class="line"><a name="l04921"></a><span class="lineno"> 4921</span>&#160;            <span class="comment">// we must round here</span></div><div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>&#160;            ToString_RoundMantissa_AddOneIntoMantissa&lt;string_type, char_type&gt;(new_man, conv);</div><div class="line"><a name="l04923"></a><span class="lineno"> 4923</span>&#160;    }</div><div class="line"><a name="l04924"></a><span class="lineno"> 4924</span>&#160;</div><div class="line"><a name="l04925"></a><span class="lineno"> 4925</span>&#160;</div><div class="line"><a name="l04926"></a><span class="lineno"> 4926</span>&#160;</div><div class="line"><a name="l04927"></a><span class="lineno"> 4927</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04928"></a><span class="lineno"> 4928</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04929"></a><span class="lineno"> 4929</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04930"></a><span class="lineno"> 4930</span>&#160;<span class="comment">        a method for converting a string into its value</span></div><div class="line"><a name="l04931"></a><span class="lineno"> 4931</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04932"></a><span class="lineno"> 4932</span>&#160;<span class="comment">        it returns 1 if the value is too big -- we cannot pass it into the range</span></div><div class="line"><a name="l04933"></a><span class="lineno"> 4933</span>&#160;<span class="comment">        of our class Big&lt;exp,man&gt; (or if the base is incorrect)</span></div><div class="line"><a name="l04934"></a><span class="lineno"> 4934</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04935"></a><span class="lineno"> 4935</span>&#160;<span class="comment">        that means only digits before the comma operator can make this value too big, </span></div><div class="line"><a name="l04936"></a><span class="lineno"> 4936</span>&#160;<span class="comment">        all digits after the comma we can ignore</span></div><div class="line"><a name="l04937"></a><span class="lineno"> 4937</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04938"></a><span class="lineno"> 4938</span>&#160;<span class="comment">        &#39;source&#39; - pointer to the string for parsing</span></div><div class="line"><a name="l04939"></a><span class="lineno"> 4939</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04940"></a><span class="lineno"> 4940</span>&#160;<span class="comment">        if &#39;after_source&#39; is set that when this method finishes</span></div><div class="line"><a name="l04941"></a><span class="lineno"> 4941</span>&#160;<span class="comment">        it sets the pointer to the new first character after parsed value</span></div><div class="line"><a name="l04942"></a><span class="lineno"> 4942</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04943"></a><span class="lineno"> 4943</span>&#160;<span class="comment">        &#39;value_read&#39; - if the pointer is provided that means the value_read will be true</span></div><div class="line"><a name="l04944"></a><span class="lineno"> 4944</span>&#160;<span class="comment">        only when a value has been actually read, there can be situation where only such</span></div><div class="line"><a name="l04945"></a><span class="lineno"> 4945</span>&#160;<span class="comment">        a string &#39;-&#39; or &#39;+&#39; will be parsed -- &#39;after_source&#39; will be different from &#39;source&#39; but</span></div><div class="line"><a name="l04946"></a><span class="lineno"> 4946</span>&#160;<span class="comment">        no value has been read (there are no digits)</span></div><div class="line"><a name="l04947"></a><span class="lineno"> 4947</span>&#160;<span class="comment">        on other words if &#39;value_read&#39; is true -- there is at least one digit in the string</span></div><div class="line"><a name="l04948"></a><span class="lineno"> 4948</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04949"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b"> 4949</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * source, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10, <span class="keyword">const</span> <span class="keywordtype">char</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>&#160;    {</div><div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l04952"></a><span class="lineno"> 4952</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> = base;</div><div class="line"><a name="l04953"></a><span class="lineno"> 4953</span>&#160;</div><div class="line"><a name="l04954"></a><span class="lineno"> 4954</span>&#160;        <span class="keywordflow">return</span> FromStringBase(source, conv, after_source, value_read);</div><div class="line"><a name="l04955"></a><span class="lineno"> 4955</span>&#160;    }</div><div class="line"><a name="l04956"></a><span class="lineno"> 4956</span>&#160;</div><div class="line"><a name="l04957"></a><span class="lineno"> 4957</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04958"></a><span class="lineno"> 4958</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>&#160;<span class="comment">        a method for converting a string into its value</span></div><div class="line"><a name="l04960"></a><span class="lineno"> 4960</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04961"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a5506d563b02f4c506aa04e313c79d62f"> 4961</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a5506d563b02f4c506aa04e313c79d62f">FromString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * source, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv, <span class="keyword">const</span> <span class="keywordtype">char</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l04962"></a><span class="lineno"> 4962</span>&#160;    {</div><div class="line"><a name="l04963"></a><span class="lineno"> 4963</span>&#160;        <span class="keywordflow">return</span> FromStringBase(source, conv, after_source, value_read);</div><div class="line"><a name="l04964"></a><span class="lineno"> 4964</span>&#160;    }</div><div class="line"><a name="l04965"></a><span class="lineno"> 4965</span>&#160;</div><div class="line"><a name="l04966"></a><span class="lineno"> 4966</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04967"></a><span class="lineno"> 4967</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04968"></a><span class="lineno"> 4968</span>&#160;<span class="comment">        a method for converting a string into its value     </span></div><div class="line"><a name="l04969"></a><span class="lineno"> 4969</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04970"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a3aa7b73969b57a1d50081fedf184c222"> 4970</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a3aa7b73969b57a1d50081fedf184c222">FromString</a>(<span class="keyword">const</span> std::string &amp; <span class="keywordtype">string</span>, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10, <span class="keyword">const</span> <span class="keywordtype">char</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l04971"></a><span class="lineno"> 4971</span>&#160;    {</div><div class="line"><a name="l04972"></a><span class="lineno"> 4972</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>(<span class="keywordtype">string</span>.c_str(), base, after_source, value_read);</div><div class="line"><a name="l04973"></a><span class="lineno"> 4973</span>&#160;    }</div><div class="line"><a name="l04974"></a><span class="lineno"> 4974</span>&#160;</div><div class="line"><a name="l04975"></a><span class="lineno"> 4975</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04976"></a><span class="lineno"> 4976</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04977"></a><span class="lineno"> 4977</span>&#160;<span class="comment">        a method for converting a string into its value     </span></div><div class="line"><a name="l04978"></a><span class="lineno"> 4978</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04979"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac33449ca94ff43cb02dde88ab6f3a18a"> 4979</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ac33449ca94ff43cb02dde88ab6f3a18a">FromString</a>(<span class="keyword">const</span> std::string &amp; <span class="keywordtype">string</span>, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv, <span class="keyword">const</span> <span class="keywordtype">char</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>&#160;    {</div><div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>(<span class="keywordtype">string</span>.c_str(), conv, after_source, value_read);</div><div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>&#160;    }</div><div class="line"><a name="l04983"></a><span class="lineno"> 4983</span>&#160;</div><div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>&#160;</div><div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>&#160;<span class="preprocessor">#ifndef TTMATH_DONT_USE_WCHAR</span></div><div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l04988"></a><span class="lineno"> 4988</span>&#160;<span class="comment">        a method for converting a string into its value</span></div><div class="line"><a name="l04989"></a><span class="lineno"> 4989</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l04990"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aefbb46b40a69874b432f7aec43f8d805"> 4990</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#aefbb46b40a69874b432f7aec43f8d805">FromString</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> * source, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>&#160;    {</div><div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>&#160;        <a class="code" href="structttmath_1_1_conv.html">Conv</a> conv;</div><div class="line"><a name="l04993"></a><span class="lineno"> 4993</span>&#160;        conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> = base;</div><div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>&#160;</div><div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>&#160;        <span class="keywordflow">return</span> FromStringBase(source, conv, after_source, value_read);</div><div class="line"><a name="l04996"></a><span class="lineno"> 4996</span>&#160;    }</div><div class="line"><a name="l04997"></a><span class="lineno"> 4997</span>&#160;</div><div class="line"><a name="l04998"></a><span class="lineno"> 4998</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04999"></a><span class="lineno"> 4999</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05000"></a><span class="lineno"> 5000</span>&#160;<span class="comment">        a method for converting a string into its value</span></div><div class="line"><a name="l05001"></a><span class="lineno"> 5001</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05002"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#acad4eec61a4e9b96ea604681b0428199"> 5002</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#acad4eec61a4e9b96ea604681b0428199">FromString</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> * source, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l05003"></a><span class="lineno"> 5003</span>&#160;    {</div><div class="line"><a name="l05004"></a><span class="lineno"> 5004</span>&#160;        <span class="keywordflow">return</span> FromStringBase(source, conv, after_source, value_read);</div><div class="line"><a name="l05005"></a><span class="lineno"> 5005</span>&#160;    }</div><div class="line"><a name="l05006"></a><span class="lineno"> 5006</span>&#160;</div><div class="line"><a name="l05007"></a><span class="lineno"> 5007</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05008"></a><span class="lineno"> 5008</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05009"></a><span class="lineno"> 5009</span>&#160;<span class="comment">        a method for converting a string into its value     </span></div><div class="line"><a name="l05010"></a><span class="lineno"> 5010</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05011"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a8ee2980e2a25efa1779756b3c69ee8a8"> 5011</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a8ee2980e2a25efa1779756b3c69ee8a8">FromString</a>(<span class="keyword">const</span> std::wstring &amp; <span class="keywordtype">string</span>, <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> base = 10, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l05012"></a><span class="lineno"> 5012</span>&#160;    {</div><div class="line"><a name="l05013"></a><span class="lineno"> 5013</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>(<span class="keywordtype">string</span>.c_str(), base, after_source, value_read);</div><div class="line"><a name="l05014"></a><span class="lineno"> 5014</span>&#160;    }</div><div class="line"><a name="l05015"></a><span class="lineno"> 5015</span>&#160;</div><div class="line"><a name="l05016"></a><span class="lineno"> 5016</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05017"></a><span class="lineno"> 5017</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05018"></a><span class="lineno"> 5018</span>&#160;<span class="comment">        a method for converting a string into its value     </span></div><div class="line"><a name="l05019"></a><span class="lineno"> 5019</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05020"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ad2ffa272f4b4f3297168c7c488991cd3"> 5020</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#ad2ffa272f4b4f3297168c7c488991cd3">FromString</a>(<span class="keyword">const</span> std::wstring &amp; <span class="keywordtype">string</span>, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l05021"></a><span class="lineno"> 5021</span>&#160;    {</div><div class="line"><a name="l05022"></a><span class="lineno"> 5022</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>(<span class="keywordtype">string</span>.c_str(), conv, after_source, value_read);</div><div class="line"><a name="l05023"></a><span class="lineno"> 5023</span>&#160;    }</div><div class="line"><a name="l05024"></a><span class="lineno"> 5024</span>&#160;</div><div class="line"><a name="l05025"></a><span class="lineno"> 5025</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l05026"></a><span class="lineno"> 5026</span>&#160;</div><div class="line"><a name="l05027"></a><span class="lineno"> 5027</span>&#160;</div><div class="line"><a name="l05028"></a><span class="lineno"> 5028</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l05029"></a><span class="lineno"> 5029</span>&#160;</div><div class="line"><a name="l05030"></a><span class="lineno"> 5030</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05031"></a><span class="lineno"> 5031</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05032"></a><span class="lineno"> 5032</span>&#160;<span class="comment">        an auxiliary method for converting from a string</span></div><div class="line"><a name="l05033"></a><span class="lineno"> 5033</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05034"></a><span class="lineno"> 5034</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05035"></a><span class="lineno"> 5035</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromStringBase(<span class="keyword">const</span> char_type * source, <span class="keyword">const</span> <a class="code" href="structttmath_1_1_conv.html">Conv</a> &amp; conv, <span class="keyword">const</span> char_type ** after_source = 0, <span class="keywordtype">bool</span> * value_read = 0)</div><div class="line"><a name="l05036"></a><span class="lineno"> 5036</span>&#160;    {</div><div class="line"><a name="l05037"></a><span class="lineno"> 5037</span>&#160;    <span class="keywordtype">bool</span> is_sign;</div><div class="line"><a name="l05038"></a><span class="lineno"> 5038</span>&#160;    <span class="keywordtype">bool</span> value_read_temp = <span class="keyword">false</span>;</div><div class="line"><a name="l05039"></a><span class="lineno"> 5039</span>&#160;</div><div class="line"><a name="l05040"></a><span class="lineno"> 5040</span>&#160;        <span class="keywordflow">if</span>( conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&lt;2 || conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a>&gt;16 )</div><div class="line"><a name="l05041"></a><span class="lineno"> 5041</span>&#160;        {</div><div class="line"><a name="l05042"></a><span class="lineno"> 5042</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">SetNan</a>();</div><div class="line"><a name="l05043"></a><span class="lineno"> 5043</span>&#160;</div><div class="line"><a name="l05044"></a><span class="lineno"> 5044</span>&#160;            <span class="keywordflow">if</span>( after_source )</div><div class="line"><a name="l05045"></a><span class="lineno"> 5045</span>&#160;                *after_source = source;</div><div class="line"><a name="l05046"></a><span class="lineno"> 5046</span>&#160;</div><div class="line"><a name="l05047"></a><span class="lineno"> 5047</span>&#160;            <span class="keywordflow">if</span>( value_read )</div><div class="line"><a name="l05048"></a><span class="lineno"> 5048</span>&#160;                *value_read = value_read_temp;</div><div class="line"><a name="l05049"></a><span class="lineno"> 5049</span>&#160;</div><div class="line"><a name="l05050"></a><span class="lineno"> 5050</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05051"></a><span class="lineno"> 5051</span>&#160;        }</div><div class="line"><a name="l05052"></a><span class="lineno"> 5052</span>&#160;</div><div class="line"><a name="l05053"></a><span class="lineno"> 5053</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l05054"></a><span class="lineno"> 5054</span>&#160;        FromString_TestSign( source, is_sign );</div><div class="line"><a name="l05055"></a><span class="lineno"> 5055</span>&#160;</div><div class="line"><a name="l05056"></a><span class="lineno"> 5056</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = FromString_ReadPartBeforeComma( source, conv, value_read_temp );</div><div class="line"><a name="l05057"></a><span class="lineno"> 5057</span>&#160;</div><div class="line"><a name="l05058"></a><span class="lineno"> 5058</span>&#160;        <span class="keywordflow">if</span>( FromString_TestCommaOperator(source, conv) )</div><div class="line"><a name="l05059"></a><span class="lineno"> 5059</span>&#160;            c += FromString_ReadPartAfterComma( source, conv, value_read_temp );</div><div class="line"><a name="l05060"></a><span class="lineno"> 5060</span>&#160;</div><div class="line"><a name="l05061"></a><span class="lineno"> 5061</span>&#160;        <span class="keywordflow">if</span>( value_read_temp &amp;&amp; conv.<a class="code" href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">base</a> == 10 )</div><div class="line"><a name="l05062"></a><span class="lineno"> 5062</span>&#160;            c += FromString_ReadScientificIfExists( source );</div><div class="line"><a name="l05063"></a><span class="lineno"> 5063</span>&#160;</div><div class="line"><a name="l05064"></a><span class="lineno"> 5064</span>&#160;        <span class="keywordflow">if</span>( is_sign &amp;&amp; !<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05065"></a><span class="lineno"> 5065</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">ChangeSign</a>();</div><div class="line"><a name="l05066"></a><span class="lineno"> 5066</span>&#160;</div><div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>&#160;        <span class="keywordflow">if</span>( after_source )</div><div class="line"><a name="l05068"></a><span class="lineno"> 5068</span>&#160;            *after_source = source;</div><div class="line"><a name="l05069"></a><span class="lineno"> 5069</span>&#160;</div><div class="line"><a name="l05070"></a><span class="lineno"> 5070</span>&#160;        <span class="keywordflow">if</span>( value_read )</div><div class="line"><a name="l05071"></a><span class="lineno"> 5071</span>&#160;            *value_read = value_read_temp;</div><div class="line"><a name="l05072"></a><span class="lineno"> 5072</span>&#160;</div><div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l05074"></a><span class="lineno"> 5074</span>&#160;    }</div><div class="line"><a name="l05075"></a><span class="lineno"> 5075</span>&#160;</div><div class="line"><a name="l05076"></a><span class="lineno"> 5076</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05077"></a><span class="lineno"> 5077</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05078"></a><span class="lineno"> 5078</span>&#160;<span class="comment">        we&#39;re testing whether the value is with the sign</span></div><div class="line"><a name="l05079"></a><span class="lineno"> 5079</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05080"></a><span class="lineno"> 5080</span>&#160;<span class="comment">        (this method is used from &#39;FromString_ReadPartScientific&#39; too)</span></div><div class="line"><a name="l05081"></a><span class="lineno"> 5081</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05082"></a><span class="lineno"> 5082</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05083"></a><span class="lineno"> 5083</span>&#160;    <span class="keywordtype">void</span> FromString_TestSign( <span class="keyword">const</span> char_type * &amp; source, <span class="keywordtype">bool</span> &amp; is_sign )</div><div class="line"><a name="l05084"></a><span class="lineno"> 5084</span>&#160;    {</div><div class="line"><a name="l05085"></a><span class="lineno"> 5085</span>&#160;        Misc::SkipWhiteCharacters(source);</div><div class="line"><a name="l05086"></a><span class="lineno"> 5086</span>&#160;</div><div class="line"><a name="l05087"></a><span class="lineno"> 5087</span>&#160;        is_sign = <span class="keyword">false</span>;</div><div class="line"><a name="l05088"></a><span class="lineno"> 5088</span>&#160;</div><div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>&#160;        <span class="keywordflow">if</span>( *source == <span class="charliteral">&#39;-&#39;</span> )</div><div class="line"><a name="l05090"></a><span class="lineno"> 5090</span>&#160;        {</div><div class="line"><a name="l05091"></a><span class="lineno"> 5091</span>&#160;            is_sign = <span class="keyword">true</span>;</div><div class="line"><a name="l05092"></a><span class="lineno"> 5092</span>&#160;            ++source;</div><div class="line"><a name="l05093"></a><span class="lineno"> 5093</span>&#160;        }</div><div class="line"><a name="l05094"></a><span class="lineno"> 5094</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l05095"></a><span class="lineno"> 5095</span>&#160;        <span class="keywordflow">if</span>( *source == <span class="charliteral">&#39;+&#39;</span> )</div><div class="line"><a name="l05096"></a><span class="lineno"> 5096</span>&#160;        {</div><div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>&#160;            ++source;</div><div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>&#160;        }</div><div class="line"><a name="l05099"></a><span class="lineno"> 5099</span>&#160;    }</div><div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>&#160;</div><div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>&#160;<span class="comment">        we&#39;re testing whether there&#39;s a comma operator</span></div><div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05105"></a><span class="lineno"> 5105</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05106"></a><span class="lineno"> 5106</span>&#160;    <span class="keywordtype">bool</span> FromString_TestCommaOperator(<span class="keyword">const</span> char_type * &amp; source, <span class="keyword">const</span> Conv &amp; conv)</div><div class="line"><a name="l05107"></a><span class="lineno"> 5107</span>&#160;    {</div><div class="line"><a name="l05108"></a><span class="lineno"> 5108</span>&#160;        <span class="keywordflow">if</span>( (*source == static_cast&lt;char_type&gt;(conv.comma)) || </div><div class="line"><a name="l05109"></a><span class="lineno"> 5109</span>&#160;            (*source == static_cast&lt;char_type&gt;(conv.comma2) &amp;&amp; conv.comma2 != 0 ) )</div><div class="line"><a name="l05110"></a><span class="lineno"> 5110</span>&#160;        {</div><div class="line"><a name="l05111"></a><span class="lineno"> 5111</span>&#160;            ++source;</div><div class="line"><a name="l05112"></a><span class="lineno"> 5112</span>&#160;</div><div class="line"><a name="l05113"></a><span class="lineno"> 5113</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05114"></a><span class="lineno"> 5114</span>&#160;        }</div><div class="line"><a name="l05115"></a><span class="lineno"> 5115</span>&#160;</div><div class="line"><a name="l05116"></a><span class="lineno"> 5116</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05117"></a><span class="lineno"> 5117</span>&#160;    }</div><div class="line"><a name="l05118"></a><span class="lineno"> 5118</span>&#160;</div><div class="line"><a name="l05119"></a><span class="lineno"> 5119</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05120"></a><span class="lineno"> 5120</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05121"></a><span class="lineno"> 5121</span>&#160;<span class="comment">        this method reads the first part of a string</span></div><div class="line"><a name="l05122"></a><span class="lineno"> 5122</span>&#160;<span class="comment">        (before the comma operator)</span></div><div class="line"><a name="l05123"></a><span class="lineno"> 5123</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05124"></a><span class="lineno"> 5124</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05125"></a><span class="lineno"> 5125</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromString_ReadPartBeforeComma( <span class="keyword">const</span> char_type * &amp; source, <span class="keyword">const</span> Conv &amp; conv, <span class="keywordtype">bool</span> &amp; value_read )</div><div class="line"><a name="l05126"></a><span class="lineno"> 5126</span>&#160;    {</div><div class="line"><a name="l05127"></a><span class="lineno"> 5127</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> character;</div><div class="line"><a name="l05128"></a><span class="lineno"> 5128</span>&#160;        Big&lt;exp, man&gt; temp;</div><div class="line"><a name="l05129"></a><span class="lineno"> 5129</span>&#160;        Big&lt;exp, man&gt; base_( conv.base );</div><div class="line"><a name="l05130"></a><span class="lineno"> 5130</span>&#160;        </div><div class="line"><a name="l05131"></a><span class="lineno"> 5131</span>&#160;        Misc::SkipWhiteCharacters( source );</div><div class="line"><a name="l05132"></a><span class="lineno"> 5132</span>&#160;</div><div class="line"><a name="l05133"></a><span class="lineno"> 5133</span>&#160;        <span class="keywordflow">for</span>( ; true ; ++source )</div><div class="line"><a name="l05134"></a><span class="lineno"> 5134</span>&#160;        {</div><div class="line"><a name="l05135"></a><span class="lineno"> 5135</span>&#160;            <span class="keywordflow">if</span>( conv.group!=0 &amp;&amp; *source==static_cast&lt;char&gt;(conv.group) )</div><div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l05137"></a><span class="lineno"> 5137</span>&#160;</div><div class="line"><a name="l05138"></a><span class="lineno"> 5138</span>&#160;            character = <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(*source, conv.base);</div><div class="line"><a name="l05139"></a><span class="lineno"> 5139</span>&#160;</div><div class="line"><a name="l05140"></a><span class="lineno"> 5140</span>&#160;            <span class="keywordflow">if</span>( character == -1 )</div><div class="line"><a name="l05141"></a><span class="lineno"> 5141</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l05142"></a><span class="lineno"> 5142</span>&#160;</div><div class="line"><a name="l05143"></a><span class="lineno"> 5143</span>&#160;            value_read = <span class="keyword">true</span>;</div><div class="line"><a name="l05144"></a><span class="lineno"> 5144</span>&#160;            temp = character;</div><div class="line"><a name="l05145"></a><span class="lineno"> 5145</span>&#160;</div><div class="line"><a name="l05146"></a><span class="lineno"> 5146</span>&#160;            <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(base_) )</div><div class="line"><a name="l05147"></a><span class="lineno"> 5147</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05148"></a><span class="lineno"> 5148</span>&#160;</div><div class="line"><a name="l05149"></a><span class="lineno"> 5149</span>&#160;            <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(temp) )</div><div class="line"><a name="l05150"></a><span class="lineno"> 5150</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05151"></a><span class="lineno"> 5151</span>&#160;        }</div><div class="line"><a name="l05152"></a><span class="lineno"> 5152</span>&#160;</div><div class="line"><a name="l05153"></a><span class="lineno"> 5153</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l05154"></a><span class="lineno"> 5154</span>&#160;    }</div><div class="line"><a name="l05155"></a><span class="lineno"> 5155</span>&#160;</div><div class="line"><a name="l05156"></a><span class="lineno"> 5156</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05157"></a><span class="lineno"> 5157</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05158"></a><span class="lineno"> 5158</span>&#160;<span class="comment">        this method reads the second part of a string</span></div><div class="line"><a name="l05159"></a><span class="lineno"> 5159</span>&#160;<span class="comment">        (after the comma operator)</span></div><div class="line"><a name="l05160"></a><span class="lineno"> 5160</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05161"></a><span class="lineno"> 5161</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05162"></a><span class="lineno"> 5162</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromString_ReadPartAfterComma( <span class="keyword">const</span> char_type * &amp; source, <span class="keyword">const</span> Conv &amp; conv, <span class="keywordtype">bool</span> &amp; value_read )</div><div class="line"><a name="l05163"></a><span class="lineno"> 5163</span>&#160;    {</div><div class="line"><a name="l05164"></a><span class="lineno"> 5164</span>&#160;    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> character;</div><div class="line"><a name="l05165"></a><span class="lineno"> 5165</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0, power = 0;</div><div class="line"><a name="l05166"></a><span class="lineno"> 5166</span>&#160;    UInt&lt;1&gt; power_;</div><div class="line"><a name="l05167"></a><span class="lineno"> 5167</span>&#160;    Big&lt;exp, man&gt; sum, base_(conv.base);</div><div class="line"><a name="l05168"></a><span class="lineno"> 5168</span>&#160;</div><div class="line"><a name="l05169"></a><span class="lineno"> 5169</span>&#160;        <span class="comment">// we don&#39;t remove any white characters here</span></div><div class="line"><a name="l05170"></a><span class="lineno"> 5170</span>&#160;        sum.SetZero();</div><div class="line"><a name="l05171"></a><span class="lineno"> 5171</span>&#160;</div><div class="line"><a name="l05172"></a><span class="lineno"> 5172</span>&#160;        <span class="keywordflow">for</span>( ; sum.exponent.IsSign() || sum.exponent.IsZero() ; ++source )</div><div class="line"><a name="l05173"></a><span class="lineno"> 5173</span>&#160;        {</div><div class="line"><a name="l05174"></a><span class="lineno"> 5174</span>&#160;            <span class="keywordflow">if</span>( conv.group!=0 &amp;&amp; *source==static_cast&lt;char&gt;(conv.group) )</div><div class="line"><a name="l05175"></a><span class="lineno"> 5175</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l05176"></a><span class="lineno"> 5176</span>&#160;            </div><div class="line"><a name="l05177"></a><span class="lineno"> 5177</span>&#160;            character = <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(*source, conv.base);</div><div class="line"><a name="l05178"></a><span class="lineno"> 5178</span>&#160;</div><div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>&#160;            <span class="keywordflow">if</span>( character == -1 )</div><div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l05181"></a><span class="lineno"> 5181</span>&#160;</div><div class="line"><a name="l05182"></a><span class="lineno"> 5182</span>&#160;            value_read = <span class="keyword">true</span>;</div><div class="line"><a name="l05183"></a><span class="lineno"> 5183</span>&#160;</div><div class="line"><a name="l05184"></a><span class="lineno"> 5184</span>&#160;            <span class="comment">// there actually shouldn&#39;t be a carry here</span></div><div class="line"><a name="l05185"></a><span class="lineno"> 5185</span>&#160;            c += sum.Mul(base_);</div><div class="line"><a name="l05186"></a><span class="lineno"> 5186</span>&#160;            c += sum.Add(character);</div><div class="line"><a name="l05187"></a><span class="lineno"> 5187</span>&#160;            power += 1;</div><div class="line"><a name="l05188"></a><span class="lineno"> 5188</span>&#160;</div><div class="line"><a name="l05189"></a><span class="lineno"> 5189</span>&#160;            <span class="keywordflow">if</span>( power == 0 )</div><div class="line"><a name="l05190"></a><span class="lineno"> 5190</span>&#160;                c += 1;</div><div class="line"><a name="l05191"></a><span class="lineno"> 5191</span>&#160;        }</div><div class="line"><a name="l05192"></a><span class="lineno"> 5192</span>&#160;</div><div class="line"><a name="l05193"></a><span class="lineno"> 5193</span>&#160;        <span class="comment">// we could break the parsing somewhere in the middle of the string,</span></div><div class="line"><a name="l05194"></a><span class="lineno"> 5194</span>&#160;        <span class="comment">// but the result (value) still can be good</span></div><div class="line"><a name="l05195"></a><span class="lineno"> 5195</span>&#160;        <span class="comment">// we should set a correct value of &#39;source&#39; now</span></div><div class="line"><a name="l05196"></a><span class="lineno"> 5196</span>&#160;        <span class="keywordflow">while</span>( <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(*source, conv.base) != -1 )</div><div class="line"><a name="l05197"></a><span class="lineno"> 5197</span>&#160;        {</div><div class="line"><a name="l05198"></a><span class="lineno"> 5198</span>&#160;            ++source;</div><div class="line"><a name="l05199"></a><span class="lineno"> 5199</span>&#160;        }</div><div class="line"><a name="l05200"></a><span class="lineno"> 5200</span>&#160;</div><div class="line"><a name="l05201"></a><span class="lineno"> 5201</span>&#160;        power_ = power;</div><div class="line"><a name="l05202"></a><span class="lineno"> 5202</span>&#160;        c += base_.Pow(power_);</div><div class="line"><a name="l05203"></a><span class="lineno"> 5203</span>&#160;        c += sum.Div(base_);</div><div class="line"><a name="l05204"></a><span class="lineno"> 5204</span>&#160;        c += <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(sum);</div><div class="line"><a name="l05205"></a><span class="lineno"> 5205</span>&#160;</div><div class="line"><a name="l05206"></a><span class="lineno"> 5206</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l05207"></a><span class="lineno"> 5207</span>&#160;    }</div><div class="line"><a name="l05208"></a><span class="lineno"> 5208</span>&#160;</div><div class="line"><a name="l05209"></a><span class="lineno"> 5209</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05210"></a><span class="lineno"> 5210</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05211"></a><span class="lineno"> 5211</span>&#160;<span class="comment">        this method checks whether there is a scientific part: [e|E][-|+]value</span></div><div class="line"><a name="l05212"></a><span class="lineno"> 5212</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05213"></a><span class="lineno"> 5213</span>&#160;<span class="comment">        it is called when the base is 10 and some digits were read before</span></div><div class="line"><a name="l05214"></a><span class="lineno"> 5214</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05215"></a><span class="lineno"> 5215</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromString_ReadScientificIfExists(<span class="keyword">const</span> char_type * &amp; source)</div><div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>&#160;    {</div><div class="line"><a name="l05218"></a><span class="lineno"> 5218</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l05219"></a><span class="lineno"> 5219</span>&#160;</div><div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>&#160;        <span class="keywordtype">bool</span> scientific_read = <span class="keyword">false</span>;</div><div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>&#160;        <span class="keyword">const</span> char_type * before_scientific = source;</div><div class="line"><a name="l05222"></a><span class="lineno"> 5222</span>&#160;</div><div class="line"><a name="l05223"></a><span class="lineno"> 5223</span>&#160;        <span class="keywordflow">if</span>( FromString_TestScientific(source) )</div><div class="line"><a name="l05224"></a><span class="lineno"> 5224</span>&#160;            c += FromString_ReadPartScientific( source, scientific_read );</div><div class="line"><a name="l05225"></a><span class="lineno"> 5225</span>&#160;</div><div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>&#160;        <span class="keywordflow">if</span>( !scientific_read )</div><div class="line"><a name="l05227"></a><span class="lineno"> 5227</span>&#160;            source = before_scientific;</div><div class="line"><a name="l05228"></a><span class="lineno"> 5228</span>&#160;</div><div class="line"><a name="l05229"></a><span class="lineno"> 5229</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l05230"></a><span class="lineno"> 5230</span>&#160;    }</div><div class="line"><a name="l05231"></a><span class="lineno"> 5231</span>&#160;</div><div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>&#160;</div><div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05234"></a><span class="lineno"> 5234</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05235"></a><span class="lineno"> 5235</span>&#160;<span class="comment">        we&#39;re testing whether is there the character &#39;e&#39;</span></div><div class="line"><a name="l05236"></a><span class="lineno"> 5236</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05237"></a><span class="lineno"> 5237</span>&#160;<span class="comment">        this character is only allowed when we&#39;re using the base equals 10</span></div><div class="line"><a name="l05238"></a><span class="lineno"> 5238</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05239"></a><span class="lineno"> 5239</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>&#160;    <span class="keywordtype">bool</span> FromString_TestScientific(<span class="keyword">const</span> char_type * &amp; source)</div><div class="line"><a name="l05241"></a><span class="lineno"> 5241</span>&#160;    {</div><div class="line"><a name="l05242"></a><span class="lineno"> 5242</span>&#160;        Misc::SkipWhiteCharacters(source);</div><div class="line"><a name="l05243"></a><span class="lineno"> 5243</span>&#160;</div><div class="line"><a name="l05244"></a><span class="lineno"> 5244</span>&#160;        <span class="keywordflow">if</span>( *source==<span class="charliteral">&#39;e&#39;</span> || *source==<span class="charliteral">&#39;E&#39;</span> )</div><div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>&#160;        {</div><div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>&#160;            ++source;</div><div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>&#160;</div><div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>&#160;        }</div><div class="line"><a name="l05250"></a><span class="lineno"> 5250</span>&#160;</div><div class="line"><a name="l05251"></a><span class="lineno"> 5251</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05252"></a><span class="lineno"> 5252</span>&#160;    }</div><div class="line"><a name="l05253"></a><span class="lineno"> 5253</span>&#160;</div><div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05256"></a><span class="lineno"> 5256</span>&#160;<span class="comment">        this method reads the exponent (after &#39;e&#39; character) when there&#39;s a scientific</span></div><div class="line"><a name="l05257"></a><span class="lineno"> 5257</span>&#160;<span class="comment">        format of value and only when we&#39;re using the base equals 10</span></div><div class="line"><a name="l05258"></a><span class="lineno"> 5258</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05259"></a><span class="lineno"> 5259</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05260"></a><span class="lineno"> 5260</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromString_ReadPartScientific( <span class="keyword">const</span> char_type * &amp; source, <span class="keywordtype">bool</span> &amp; scientific_read )</div><div class="line"><a name="l05261"></a><span class="lineno"> 5261</span>&#160;    {</div><div class="line"><a name="l05262"></a><span class="lineno"> 5262</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c = 0;</div><div class="line"><a name="l05263"></a><span class="lineno"> 5263</span>&#160;    Big&lt;exp, man&gt; new_exponent, temp;</div><div class="line"><a name="l05264"></a><span class="lineno"> 5264</span>&#160;    <span class="keywordtype">bool</span> was_sign = <span class="keyword">false</span>;</div><div class="line"><a name="l05265"></a><span class="lineno"> 5265</span>&#160;</div><div class="line"><a name="l05266"></a><span class="lineno"> 5266</span>&#160;        FromString_TestSign( source, was_sign );</div><div class="line"><a name="l05267"></a><span class="lineno"> 5267</span>&#160;        c += FromString_ReadPartScientific_ReadExponent( source, new_exponent, scientific_read );</div><div class="line"><a name="l05268"></a><span class="lineno"> 5268</span>&#160;</div><div class="line"><a name="l05269"></a><span class="lineno"> 5269</span>&#160;        <span class="keywordflow">if</span>( scientific_read )</div><div class="line"><a name="l05270"></a><span class="lineno"> 5270</span>&#160;        {</div><div class="line"><a name="l05271"></a><span class="lineno"> 5271</span>&#160;            <span class="keywordflow">if</span>( was_sign )</div><div class="line"><a name="l05272"></a><span class="lineno"> 5272</span>&#160;                new_exponent.ChangeSign();</div><div class="line"><a name="l05273"></a><span class="lineno"> 5273</span>&#160;</div><div class="line"><a name="l05274"></a><span class="lineno"> 5274</span>&#160;            temp = 10;</div><div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>&#160;            c += temp.Pow( new_exponent );</div><div class="line"><a name="l05276"></a><span class="lineno"> 5276</span>&#160;            c += <a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(temp);</div><div class="line"><a name="l05277"></a><span class="lineno"> 5277</span>&#160;        }</div><div class="line"><a name="l05278"></a><span class="lineno"> 5278</span>&#160;</div><div class="line"><a name="l05279"></a><span class="lineno"> 5279</span>&#160;    <span class="keywordflow">return</span> (c==0)? 0 : 1;</div><div class="line"><a name="l05280"></a><span class="lineno"> 5280</span>&#160;    }</div><div class="line"><a name="l05281"></a><span class="lineno"> 5281</span>&#160;</div><div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>&#160;<span class="comment">        this method reads the value of the extra exponent when scientific format is used</span></div><div class="line"><a name="l05285"></a><span class="lineno"> 5285</span>&#160;<span class="comment">        (only when base == 10)</span></div><div class="line"><a name="l05286"></a><span class="lineno"> 5286</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05287"></a><span class="lineno"> 5287</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l05288"></a><span class="lineno"> 5288</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> FromString_ReadPartScientific_ReadExponent( <span class="keyword">const</span> char_type * &amp; source, Big&lt;exp, man&gt; &amp; new_exponent, <span class="keywordtype">bool</span> &amp; scientific_read )</div><div class="line"><a name="l05289"></a><span class="lineno"> 5289</span>&#160;    {</div><div class="line"><a name="l05290"></a><span class="lineno"> 5290</span>&#160;    <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> character;</div><div class="line"><a name="l05291"></a><span class="lineno"> 5291</span>&#160;    Big&lt;exp, man&gt; base, temp;</div><div class="line"><a name="l05292"></a><span class="lineno"> 5292</span>&#160;</div><div class="line"><a name="l05293"></a><span class="lineno"> 5293</span>&#160;        Misc::SkipWhiteCharacters(source);</div><div class="line"><a name="l05294"></a><span class="lineno"> 5294</span>&#160;</div><div class="line"><a name="l05295"></a><span class="lineno"> 5295</span>&#160;        new_exponent.SetZero();</div><div class="line"><a name="l05296"></a><span class="lineno"> 5296</span>&#160;        base = 10;</div><div class="line"><a name="l05297"></a><span class="lineno"> 5297</span>&#160;</div><div class="line"><a name="l05298"></a><span class="lineno"> 5298</span>&#160;        <span class="keywordflow">for</span>( ; (character=<a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(*source, 10)) != -1 ; ++source )</div><div class="line"><a name="l05299"></a><span class="lineno"> 5299</span>&#160;        {</div><div class="line"><a name="l05300"></a><span class="lineno"> 5300</span>&#160;            scientific_read = <span class="keyword">true</span>;</div><div class="line"><a name="l05301"></a><span class="lineno"> 5301</span>&#160;</div><div class="line"><a name="l05302"></a><span class="lineno"> 5302</span>&#160;            temp = character;</div><div class="line"><a name="l05303"></a><span class="lineno"> 5303</span>&#160;</div><div class="line"><a name="l05304"></a><span class="lineno"> 5304</span>&#160;            <span class="keywordflow">if</span>( new_exponent.Mul(base) )</div><div class="line"><a name="l05305"></a><span class="lineno"> 5305</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05306"></a><span class="lineno"> 5306</span>&#160;</div><div class="line"><a name="l05307"></a><span class="lineno"> 5307</span>&#160;            <span class="keywordflow">if</span>( new_exponent.Add(temp) )</div><div class="line"><a name="l05308"></a><span class="lineno"> 5308</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05309"></a><span class="lineno"> 5309</span>&#160;        }</div><div class="line"><a name="l05310"></a><span class="lineno"> 5310</span>&#160;</div><div class="line"><a name="l05311"></a><span class="lineno"> 5311</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l05312"></a><span class="lineno"> 5312</span>&#160;    }</div><div class="line"><a name="l05313"></a><span class="lineno"> 5313</span>&#160;</div><div class="line"><a name="l05314"></a><span class="lineno"> 5314</span>&#160;</div><div class="line"><a name="l05315"></a><span class="lineno"> 5315</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05316"></a><span class="lineno"> 5316</span>&#160;</div><div class="line"><a name="l05317"></a><span class="lineno"> 5317</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05318"></a><span class="lineno"> 5318</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05319"></a><span class="lineno"> 5319</span>&#160;<span class="comment">        a constructor for converting a string into this class</span></div><div class="line"><a name="l05320"></a><span class="lineno"> 5320</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05321"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a77ac7df77125a3d5a66a50ce3d44eb83"> 5321</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a77ac7df77125a3d5a66a50ce3d44eb83">Big</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keywordtype">string</span>)</div><div class="line"><a name="l05322"></a><span class="lineno"> 5322</span>&#160;    {</div><div class="line"><a name="l05323"></a><span class="lineno"> 5323</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span> );</div><div class="line"><a name="l05324"></a><span class="lineno"> 5324</span>&#160;    }</div><div class="line"><a name="l05325"></a><span class="lineno"> 5325</span>&#160;</div><div class="line"><a name="l05326"></a><span class="lineno"> 5326</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05327"></a><span class="lineno"> 5327</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05328"></a><span class="lineno"> 5328</span>&#160;<span class="comment">        a constructor for converting a string into this class</span></div><div class="line"><a name="l05329"></a><span class="lineno"> 5329</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05330"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a84070489fc71cd69d0e041f2b20d0616"> 5330</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a84070489fc71cd69d0e041f2b20d0616">Big</a>(<span class="keyword">const</span> std::string &amp; <span class="keywordtype">string</span>)</div><div class="line"><a name="l05331"></a><span class="lineno"> 5331</span>&#160;    {</div><div class="line"><a name="l05332"></a><span class="lineno"> 5332</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span>.c_str() );</div><div class="line"><a name="l05333"></a><span class="lineno"> 5333</span>&#160;    }</div><div class="line"><a name="l05334"></a><span class="lineno"> 5334</span>&#160;</div><div class="line"><a name="l05335"></a><span class="lineno"> 5335</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05336"></a><span class="lineno"> 5336</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05337"></a><span class="lineno"> 5337</span>&#160;<span class="comment">        an operator= for converting a string into its value</span></div><div class="line"><a name="l05338"></a><span class="lineno"> 5338</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05339"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#abbd06a120afabc0e96daf310ed430e53"> 5339</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#abbd06a120afabc0e96daf310ed430e53">operator=</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keywordtype">string</span>)</div><div class="line"><a name="l05340"></a><span class="lineno"> 5340</span>&#160;    {</div><div class="line"><a name="l05341"></a><span class="lineno"> 5341</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span> );</div><div class="line"><a name="l05342"></a><span class="lineno"> 5342</span>&#160;</div><div class="line"><a name="l05343"></a><span class="lineno"> 5343</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05344"></a><span class="lineno"> 5344</span>&#160;    }</div><div class="line"><a name="l05345"></a><span class="lineno"> 5345</span>&#160;</div><div class="line"><a name="l05346"></a><span class="lineno"> 5346</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05347"></a><span class="lineno"> 5347</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05348"></a><span class="lineno"> 5348</span>&#160;<span class="comment">        an operator= for converting a string into its value</span></div><div class="line"><a name="l05349"></a><span class="lineno"> 5349</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05350"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a50c6e79d63ff6ee2a72a27f0e98121c4"> 5350</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a50c6e79d63ff6ee2a72a27f0e98121c4">operator=</a>(<span class="keyword">const</span> std::string &amp; <span class="keywordtype">string</span>)</div><div class="line"><a name="l05351"></a><span class="lineno"> 5351</span>&#160;    {</div><div class="line"><a name="l05352"></a><span class="lineno"> 5352</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span>.c_str() );</div><div class="line"><a name="l05353"></a><span class="lineno"> 5353</span>&#160;</div><div class="line"><a name="l05354"></a><span class="lineno"> 5354</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05355"></a><span class="lineno"> 5355</span>&#160;    }</div><div class="line"><a name="l05356"></a><span class="lineno"> 5356</span>&#160;</div><div class="line"><a name="l05357"></a><span class="lineno"> 5357</span>&#160;</div><div class="line"><a name="l05358"></a><span class="lineno"> 5358</span>&#160;</div><div class="line"><a name="l05359"></a><span class="lineno"> 5359</span>&#160;<span class="preprocessor">#ifndef TTMATH_DONT_USE_WCHAR</span></div><div class="line"><a name="l05360"></a><span class="lineno"> 5360</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05361"></a><span class="lineno"> 5361</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05362"></a><span class="lineno"> 5362</span>&#160;<span class="comment">        a constructor for converting a string into this class</span></div><div class="line"><a name="l05363"></a><span class="lineno"> 5363</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05364"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a58f72e5345f932653619cc463f814bbb"> 5364</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a58f72e5345f932653619cc463f814bbb">Big</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> * <span class="keywordtype">string</span>)</div><div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>&#160;    {</div><div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span> );</div><div class="line"><a name="l05367"></a><span class="lineno"> 5367</span>&#160;    }</div><div class="line"><a name="l05368"></a><span class="lineno"> 5368</span>&#160;</div><div class="line"><a name="l05369"></a><span class="lineno"> 5369</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05370"></a><span class="lineno"> 5370</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05371"></a><span class="lineno"> 5371</span>&#160;<span class="comment">        a constructor for converting a string into this class</span></div><div class="line"><a name="l05372"></a><span class="lineno"> 5372</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05373"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a9b1c08752b17d93cf5a11493177869bf"> 5373</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html#a9b1c08752b17d93cf5a11493177869bf">Big</a>(<span class="keyword">const</span> std::wstring &amp; <span class="keywordtype">string</span>)</div><div class="line"><a name="l05374"></a><span class="lineno"> 5374</span>&#160;    {</div><div class="line"><a name="l05375"></a><span class="lineno"> 5375</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span>.c_str() );</div><div class="line"><a name="l05376"></a><span class="lineno"> 5376</span>&#160;    }</div><div class="line"><a name="l05377"></a><span class="lineno"> 5377</span>&#160;</div><div class="line"><a name="l05378"></a><span class="lineno"> 5378</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05379"></a><span class="lineno"> 5379</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05380"></a><span class="lineno"> 5380</span>&#160;<span class="comment">        an operator= for converting a string into its value</span></div><div class="line"><a name="l05381"></a><span class="lineno"> 5381</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05382"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa42b85559280aa8565268423b95a5f0a"> 5382</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#aa42b85559280aa8565268423b95a5f0a">operator=</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> * <span class="keywordtype">string</span>)</div><div class="line"><a name="l05383"></a><span class="lineno"> 5383</span>&#160;    {</div><div class="line"><a name="l05384"></a><span class="lineno"> 5384</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span> );</div><div class="line"><a name="l05385"></a><span class="lineno"> 5385</span>&#160;</div><div class="line"><a name="l05386"></a><span class="lineno"> 5386</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05387"></a><span class="lineno"> 5387</span>&#160;    }</div><div class="line"><a name="l05388"></a><span class="lineno"> 5388</span>&#160;</div><div class="line"><a name="l05389"></a><span class="lineno"> 5389</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05390"></a><span class="lineno"> 5390</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05391"></a><span class="lineno"> 5391</span>&#160;<span class="comment">        an operator= for converting a string into its value</span></div><div class="line"><a name="l05392"></a><span class="lineno"> 5392</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05393"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a72fb088166c205c7c7e6b85d3f8773de"> 5393</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp, man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#a72fb088166c205c7c7e6b85d3f8773de">operator=</a>(<span class="keyword">const</span> std::wstring &amp; <span class="keywordtype">string</span>)</div><div class="line"><a name="l05394"></a><span class="lineno"> 5394</span>&#160;    {</div><div class="line"><a name="l05395"></a><span class="lineno"> 5395</span>&#160;        <a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( <span class="keywordtype">string</span>.c_str() );</div><div class="line"><a name="l05396"></a><span class="lineno"> 5396</span>&#160;</div><div class="line"><a name="l05397"></a><span class="lineno"> 5397</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05398"></a><span class="lineno"> 5398</span>&#160;    }</div><div class="line"><a name="l05399"></a><span class="lineno"> 5399</span>&#160;</div><div class="line"><a name="l05400"></a><span class="lineno"> 5400</span>&#160;</div><div class="line"><a name="l05401"></a><span class="lineno"> 5401</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l05402"></a><span class="lineno"> 5402</span>&#160;</div><div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>&#160;</div><div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05405"></a><span class="lineno"> 5405</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05406"></a><span class="lineno"> 5406</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>&#160;<span class="comment">    *   methods for comparing</span></div><div class="line"><a name="l05408"></a><span class="lineno"> 5408</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05409"></a><span class="lineno"> 5409</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05410"></a><span class="lineno"> 5410</span>&#160;</div><div class="line"><a name="l05411"></a><span class="lineno"> 5411</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05412"></a><span class="lineno"> 5412</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05413"></a><span class="lineno"> 5413</span>&#160;<span class="comment">        this method performs the formula &#39;abs(this) &lt; abs(ss2)&#39;</span></div><div class="line"><a name="l05414"></a><span class="lineno"> 5414</span>&#160;<span class="comment">        and returns the result</span></div><div class="line"><a name="l05415"></a><span class="lineno"> 5415</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05416"></a><span class="lineno"> 5416</span>&#160;<span class="comment">        (in other words it treats &#39;this&#39; and &#39;ss2&#39; as values without a sign)</span></div><div class="line"><a name="l05417"></a><span class="lineno"> 5417</span>&#160;<span class="comment">        we don&#39;t check the NaN flag</span></div><div class="line"><a name="l05418"></a><span class="lineno"> 5418</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05419"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6"> 5419</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05420"></a><span class="lineno"> 5420</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05421"></a><span class="lineno"> 5421</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05422"></a><span class="lineno"> 5422</span>&#160;        {</div><div class="line"><a name="l05423"></a><span class="lineno"> 5423</span>&#160;            <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05424"></a><span class="lineno"> 5424</span>&#160;                <span class="comment">// we&#39;ve got two zeroes</span></div><div class="line"><a name="l05425"></a><span class="lineno"> 5425</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05426"></a><span class="lineno"> 5426</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l05427"></a><span class="lineno"> 5427</span>&#160;                <span class="comment">// this==0 and ss2!=0</span></div><div class="line"><a name="l05428"></a><span class="lineno"> 5428</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05429"></a><span class="lineno"> 5429</span>&#160;        }</div><div class="line"><a name="l05430"></a><span class="lineno"> 5430</span>&#160;</div><div class="line"><a name="l05431"></a><span class="lineno"> 5431</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05432"></a><span class="lineno"> 5432</span>&#160;        {</div><div class="line"><a name="l05433"></a><span class="lineno"> 5433</span>&#160;            <span class="comment">// this!=0 and ss2==0</span></div><div class="line"><a name="l05434"></a><span class="lineno"> 5434</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05435"></a><span class="lineno"> 5435</span>&#160;        }</div><div class="line"><a name="l05436"></a><span class="lineno"> 5436</span>&#160;</div><div class="line"><a name="l05437"></a><span class="lineno"> 5437</span>&#160;        <span class="comment">// we&#39;re using the fact that all bits in mantissa are pushed</span></div><div class="line"><a name="l05438"></a><span class="lineno"> 5438</span>&#160;        <span class="comment">// into the left side -- Standardizing()</span></div><div class="line"><a name="l05439"></a><span class="lineno"> 5439</span>&#160;        <span class="keywordflow">if</span>( exponent == ss2.exponent )</div><div class="line"><a name="l05440"></a><span class="lineno"> 5440</span>&#160;            <span class="keywordflow">return</span> mantissa &lt; ss2.mantissa;</div><div class="line"><a name="l05441"></a><span class="lineno"> 5441</span>&#160;</div><div class="line"><a name="l05442"></a><span class="lineno"> 5442</span>&#160;    <span class="keywordflow">return</span> exponent &lt; ss2.exponent;</div><div class="line"><a name="l05443"></a><span class="lineno"> 5443</span>&#160;    }</div><div class="line"><a name="l05444"></a><span class="lineno"> 5444</span>&#160;</div><div class="line"><a name="l05445"></a><span class="lineno"> 5445</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05446"></a><span class="lineno"> 5446</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05447"></a><span class="lineno"> 5447</span>&#160;<span class="comment">        this method performs the formula &#39;abs(this) &gt; abs(ss2)&#39;</span></div><div class="line"><a name="l05448"></a><span class="lineno"> 5448</span>&#160;<span class="comment">        and returns the result</span></div><div class="line"><a name="l05449"></a><span class="lineno"> 5449</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05450"></a><span class="lineno"> 5450</span>&#160;<span class="comment">        (in other words it treats &#39;this&#39; and &#39;ss2&#39; as values without a sign)</span></div><div class="line"><a name="l05451"></a><span class="lineno"> 5451</span>&#160;<span class="comment">        we don&#39;t check the NaN flag</span></div><div class="line"><a name="l05452"></a><span class="lineno"> 5452</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05453"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a8b97269748f5897406ce4d8cecbca432"> 5453</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#a8b97269748f5897406ce4d8cecbca432">GreaterWithoutSignThan</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05454"></a><span class="lineno"> 5454</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05455"></a><span class="lineno"> 5455</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05456"></a><span class="lineno"> 5456</span>&#160;        {</div><div class="line"><a name="l05457"></a><span class="lineno"> 5457</span>&#160;            <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05458"></a><span class="lineno"> 5458</span>&#160;            {</div><div class="line"><a name="l05459"></a><span class="lineno"> 5459</span>&#160;                <span class="comment">// we&#39;ve got two zeroes</span></div><div class="line"><a name="l05460"></a><span class="lineno"> 5460</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05461"></a><span class="lineno"> 5461</span>&#160;            }</div><div class="line"><a name="l05462"></a><span class="lineno"> 5462</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l05463"></a><span class="lineno"> 5463</span>&#160;            {</div><div class="line"><a name="l05464"></a><span class="lineno"> 5464</span>&#160;                <span class="comment">// this==0 and ss2!=0</span></div><div class="line"><a name="l05465"></a><span class="lineno"> 5465</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05466"></a><span class="lineno"> 5466</span>&#160;            }</div><div class="line"><a name="l05467"></a><span class="lineno"> 5467</span>&#160;        }</div><div class="line"><a name="l05468"></a><span class="lineno"> 5468</span>&#160;</div><div class="line"><a name="l05469"></a><span class="lineno"> 5469</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05470"></a><span class="lineno"> 5470</span>&#160;        {</div><div class="line"><a name="l05471"></a><span class="lineno"> 5471</span>&#160;            <span class="comment">// this!=0 and ss2==0</span></div><div class="line"><a name="l05472"></a><span class="lineno"> 5472</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05473"></a><span class="lineno"> 5473</span>&#160;        }</div><div class="line"><a name="l05474"></a><span class="lineno"> 5474</span>&#160;</div><div class="line"><a name="l05475"></a><span class="lineno"> 5475</span>&#160;        <span class="comment">// we&#39;re using the fact that all bits in mantissa are pushed</span></div><div class="line"><a name="l05476"></a><span class="lineno"> 5476</span>&#160;        <span class="comment">// into the left side -- Standardizing()</span></div><div class="line"><a name="l05477"></a><span class="lineno"> 5477</span>&#160;        <span class="keywordflow">if</span>( exponent == ss2.exponent )</div><div class="line"><a name="l05478"></a><span class="lineno"> 5478</span>&#160;            <span class="keywordflow">return</span> mantissa &gt; ss2.mantissa;</div><div class="line"><a name="l05479"></a><span class="lineno"> 5479</span>&#160;</div><div class="line"><a name="l05480"></a><span class="lineno"> 5480</span>&#160;    <span class="keywordflow">return</span> exponent &gt; ss2.exponent;</div><div class="line"><a name="l05481"></a><span class="lineno"> 5481</span>&#160;    }</div><div class="line"><a name="l05482"></a><span class="lineno"> 5482</span>&#160;</div><div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>&#160;<span class="comment">        this method performs the formula &#39;abs(this) == abs(ss2)&#39;</span></div><div class="line"><a name="l05486"></a><span class="lineno"> 5486</span>&#160;<span class="comment">        and returns the result</span></div><div class="line"><a name="l05487"></a><span class="lineno"> 5487</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05488"></a><span class="lineno"> 5488</span>&#160;<span class="comment">        (in other words it treats &#39;this&#39; and &#39;ss2&#39; as values without a sign)</span></div><div class="line"><a name="l05489"></a><span class="lineno"> 5489</span>&#160;<span class="comment">        we don&#39;t check the NaN flag</span></div><div class="line"><a name="l05490"></a><span class="lineno"> 5490</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05491"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#af74a3fa21ce1e4a4fb308a34340fb5b0"> 5491</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#af74a3fa21ce1e4a4fb308a34340fb5b0">EqualWithoutSign</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05492"></a><span class="lineno"> 5492</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05493"></a><span class="lineno"> 5493</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05494"></a><span class="lineno"> 5494</span>&#160;        {</div><div class="line"><a name="l05495"></a><span class="lineno"> 5495</span>&#160;            <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05496"></a><span class="lineno"> 5496</span>&#160;            {</div><div class="line"><a name="l05497"></a><span class="lineno"> 5497</span>&#160;                <span class="comment">// we&#39;ve got two zeroes</span></div><div class="line"><a name="l05498"></a><span class="lineno"> 5498</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05499"></a><span class="lineno"> 5499</span>&#160;            }</div><div class="line"><a name="l05500"></a><span class="lineno"> 5500</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l05501"></a><span class="lineno"> 5501</span>&#160;            {</div><div class="line"><a name="l05502"></a><span class="lineno"> 5502</span>&#160;                <span class="comment">// this==0 and ss2!=0</span></div><div class="line"><a name="l05503"></a><span class="lineno"> 5503</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05504"></a><span class="lineno"> 5504</span>&#160;            }</div><div class="line"><a name="l05505"></a><span class="lineno"> 5505</span>&#160;        }</div><div class="line"><a name="l05506"></a><span class="lineno"> 5506</span>&#160;</div><div class="line"><a name="l05507"></a><span class="lineno"> 5507</span>&#160;        <span class="keywordflow">if</span>( ss2.<a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05508"></a><span class="lineno"> 5508</span>&#160;        {</div><div class="line"><a name="l05509"></a><span class="lineno"> 5509</span>&#160;            <span class="comment">// this!=0 and ss2==0</span></div><div class="line"><a name="l05510"></a><span class="lineno"> 5510</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05511"></a><span class="lineno"> 5511</span>&#160;        }</div><div class="line"><a name="l05512"></a><span class="lineno"> 5512</span>&#160;</div><div class="line"><a name="l05513"></a><span class="lineno"> 5513</span>&#160;        <span class="keywordflow">if</span>( exponent==ss2.exponent &amp;&amp; mantissa==ss2.mantissa )</div><div class="line"><a name="l05514"></a><span class="lineno"> 5514</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05515"></a><span class="lineno"> 5515</span>&#160;</div><div class="line"><a name="l05516"></a><span class="lineno"> 5516</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05517"></a><span class="lineno"> 5517</span>&#160;    }</div><div class="line"><a name="l05518"></a><span class="lineno"> 5518</span>&#160;</div><div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>&#160;</div><div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>&#160;    <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() &amp;&amp; !ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>&#160;        {</div><div class="line"><a name="l05524"></a><span class="lineno"> 5524</span>&#160;            <span class="comment">// this&lt;0 and ss2&gt;=0</span></div><div class="line"><a name="l05525"></a><span class="lineno"> 5525</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05526"></a><span class="lineno"> 5526</span>&#160;        }</div><div class="line"><a name="l05527"></a><span class="lineno"> 5527</span>&#160;</div><div class="line"><a name="l05528"></a><span class="lineno"> 5528</span>&#160;        <span class="keywordflow">if</span>( !<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() &amp;&amp; ss2.<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>&#160;        {</div><div class="line"><a name="l05530"></a><span class="lineno"> 5530</span>&#160;            <span class="comment">// this&gt;=0 and ss2&lt;0</span></div><div class="line"><a name="l05531"></a><span class="lineno"> 5531</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>&#160;        }</div><div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>&#160;</div><div class="line"><a name="l05534"></a><span class="lineno"> 5534</span>&#160;        <span class="comment">// both signs are the same</span></div><div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>&#160;</div><div class="line"><a name="l05536"></a><span class="lineno"> 5536</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l05537"></a><span class="lineno"> 5537</span>&#160;            <span class="keywordflow">return</span> ss2.<a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>( *<span class="keyword">this</span> );</div><div class="line"><a name="l05538"></a><span class="lineno"> 5538</span>&#160;</div><div class="line"><a name="l05539"></a><span class="lineno"> 5539</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">SmallerWithoutSignThan</a>( ss2 );</div><div class="line"><a name="l05540"></a><span class="lineno"> 5540</span>&#160;    }</div><div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>&#160;</div><div class="line"><a name="l05542"></a><span class="lineno"> 5542</span>&#160;</div><div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>&#160;    <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() != ss2.IsSign() )</div><div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05547"></a><span class="lineno"> 5547</span>&#160;</div><div class="line"><a name="l05548"></a><span class="lineno"> 5548</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#af74a3fa21ce1e4a4fb308a34340fb5b0">EqualWithoutSign</a>( ss2 );</div><div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>&#160;    }</div><div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>&#160;</div><div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>&#160;</div><div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>&#160;    <span class="keywordtype">bool</span> operator&gt;(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() &amp;&amp; !ss2.IsSign() )</div><div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>&#160;        {</div><div class="line"><a name="l05556"></a><span class="lineno"> 5556</span>&#160;            <span class="comment">// this&lt;0 and ss2&gt;=0</span></div><div class="line"><a name="l05557"></a><span class="lineno"> 5557</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>&#160;        }</div><div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>&#160;</div><div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>&#160;        <span class="keywordflow">if</span>( !<a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() &amp;&amp; ss2.IsSign() )</div><div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>&#160;        {</div><div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>&#160;            <span class="comment">// this&gt;=0 and ss2&lt;0</span></div><div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05564"></a><span class="lineno"> 5564</span>&#160;        }</div><div class="line"><a name="l05565"></a><span class="lineno"> 5565</span>&#160;</div><div class="line"><a name="l05566"></a><span class="lineno"> 5566</span>&#160;        <span class="comment">// both signs are the same</span></div><div class="line"><a name="l05567"></a><span class="lineno"> 5567</span>&#160;</div><div class="line"><a name="l05568"></a><span class="lineno"> 5568</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l05569"></a><span class="lineno"> 5569</span>&#160;            <span class="keywordflow">return</span> ss2.GreaterWithoutSignThan( *<span class="keyword">this</span> );</div><div class="line"><a name="l05570"></a><span class="lineno"> 5570</span>&#160;</div><div class="line"><a name="l05571"></a><span class="lineno"> 5571</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a8b97269748f5897406ce4d8cecbca432">GreaterWithoutSignThan</a>( ss2 );</div><div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>&#160;    }</div><div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>&#160;</div><div class="line"><a name="l05574"></a><span class="lineno"> 5574</span>&#160;</div><div class="line"><a name="l05575"></a><span class="lineno"> 5575</span>&#160;    <span class="keywordtype">bool</span> operator&gt;=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05576"></a><span class="lineno"> 5576</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05577"></a><span class="lineno"> 5577</span>&#160;        <span class="keywordflow">return</span> !operator&lt;( ss2 );</div><div class="line"><a name="l05578"></a><span class="lineno"> 5578</span>&#160;    }</div><div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>&#160;</div><div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>&#160;</div><div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>&#160;    <span class="keywordtype">bool</span> operator&lt;=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05582"></a><span class="lineno"> 5582</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05583"></a><span class="lineno"> 5583</span>&#160;        <span class="keywordflow">return</span> !operator&gt;( ss2 );</div><div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>&#160;    }</div><div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>&#160;</div><div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>&#160;</div><div class="line"><a name="l05587"></a><span class="lineno"> 5587</span>&#160;    <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05588"></a><span class="lineno"> 5588</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>&#160;        <span class="keywordflow">return</span> !operator==(ss2);</div><div class="line"><a name="l05590"></a><span class="lineno"> 5590</span>&#160;    }</div><div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>&#160;</div><div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>&#160;</div><div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>&#160;</div><div class="line"><a name="l05594"></a><span class="lineno"> 5594</span>&#160;</div><div class="line"><a name="l05595"></a><span class="lineno"> 5595</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05596"></a><span class="lineno"> 5596</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05597"></a><span class="lineno"> 5597</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>&#160;<span class="comment">    *   standard mathematical operators </span></div><div class="line"><a name="l05599"></a><span class="lineno"> 5599</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05600"></a><span class="lineno"> 5600</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>&#160;</div><div class="line"><a name="l05602"></a><span class="lineno"> 5602</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05603"></a><span class="lineno"> 5603</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>&#160;<span class="comment">        an operator for changing the sign</span></div><div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05606"></a><span class="lineno"> 5606</span>&#160;<span class="comment">        this method is not changing &#39;this&#39; but the changed value is returned</span></div><div class="line"><a name="l05607"></a><span class="lineno"> 5607</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05608"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aaf5468225cd5060bf2e3a31532933a72"> 5608</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> <a class="code" href="classttmath_1_1_big.html#aaf5468225cd5060bf2e3a31532933a72">operator-</a>()<span class="keyword"> const</span></div><div class="line"><a name="l05609"></a><span class="lineno"> 5609</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05610"></a><span class="lineno"> 5610</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l05611"></a><span class="lineno"> 5611</span>&#160;</div><div class="line"><a name="l05612"></a><span class="lineno"> 5612</span>&#160;        temp.<a class="code" href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">ChangeSign</a>();</div><div class="line"><a name="l05613"></a><span class="lineno"> 5613</span>&#160;</div><div class="line"><a name="l05614"></a><span class="lineno"> 5614</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05615"></a><span class="lineno"> 5615</span>&#160;    }</div><div class="line"><a name="l05616"></a><span class="lineno"> 5616</span>&#160;</div><div class="line"><a name="l05617"></a><span class="lineno"> 5617</span>&#160;</div><div class="line"><a name="l05618"></a><span class="lineno"> 5618</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> <a class="code" href="classttmath_1_1_big.html#aaf5468225cd5060bf2e3a31532933a72">operator-</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05619"></a><span class="lineno"> 5619</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05620"></a><span class="lineno"> 5620</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l05621"></a><span class="lineno"> 5621</span>&#160;</div><div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>&#160;        temp.Sub(ss2);</div><div class="line"><a name="l05623"></a><span class="lineno"> 5623</span>&#160;</div><div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>&#160;    }</div><div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>&#160;</div><div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>&#160;    Big&lt;exp,man&gt; &amp; operator-=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)</div><div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>&#160;    {</div><div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>(ss2);</div><div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>&#160;</div><div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05632"></a><span class="lineno"> 5632</span>&#160;    }</div><div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>&#160;</div><div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>&#160;</div><div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>&#160;    Big&lt;exp,man&gt; operator+(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>&#160;    Big&lt;exp,man&gt; temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>&#160;</div><div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>&#160;        temp.Add(ss2);</div><div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>&#160;</div><div class="line"><a name="l05641"></a><span class="lineno"> 5641</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>&#160;    }</div><div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>&#160;</div><div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>&#160;</div><div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>&#160;    Big&lt;exp,man&gt; &amp; operator+=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)</div><div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>&#160;    {</div><div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>&#160;        <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>(ss2);</div><div class="line"><a name="l05648"></a><span class="lineno"> 5648</span>&#160;</div><div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05650"></a><span class="lineno"> 5650</span>&#160;    }</div><div class="line"><a name="l05651"></a><span class="lineno"> 5651</span>&#160;</div><div class="line"><a name="l05652"></a><span class="lineno"> 5652</span>&#160;</div><div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>&#160;    Big&lt;exp,man&gt; operator*(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05654"></a><span class="lineno"> 5654</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>&#160;    Big&lt;exp,man&gt; temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>&#160;</div><div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>&#160;        temp.Mul(ss2);</div><div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>&#160;</div><div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05660"></a><span class="lineno"> 5660</span>&#160;    }</div><div class="line"><a name="l05661"></a><span class="lineno"> 5661</span>&#160;</div><div class="line"><a name="l05662"></a><span class="lineno"> 5662</span>&#160;</div><div class="line"><a name="l05663"></a><span class="lineno"> 5663</span>&#160;    Big&lt;exp,man&gt; &amp; operator*=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)</div><div class="line"><a name="l05664"></a><span class="lineno"> 5664</span>&#160;    {</div><div class="line"><a name="l05665"></a><span class="lineno"> 5665</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">Mul</a>(ss2);</div><div class="line"><a name="l05666"></a><span class="lineno"> 5666</span>&#160;</div><div class="line"><a name="l05667"></a><span class="lineno"> 5667</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05668"></a><span class="lineno"> 5668</span>&#160;    }</div><div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>&#160;</div><div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>&#160;</div><div class="line"><a name="l05671"></a><span class="lineno"> 5671</span>&#160;    Big&lt;exp,man&gt; operator/(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)<span class="keyword"> const</span></div><div class="line"><a name="l05672"></a><span class="lineno"> 5672</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05673"></a><span class="lineno"> 5673</span>&#160;    Big&lt;exp,man&gt; temp(*<span class="keyword">this</span>);</div><div class="line"><a name="l05674"></a><span class="lineno"> 5674</span>&#160;</div><div class="line"><a name="l05675"></a><span class="lineno"> 5675</span>&#160;        temp.Div(ss2);</div><div class="line"><a name="l05676"></a><span class="lineno"> 5676</span>&#160;</div><div class="line"><a name="l05677"></a><span class="lineno"> 5677</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05678"></a><span class="lineno"> 5678</span>&#160;    }</div><div class="line"><a name="l05679"></a><span class="lineno"> 5679</span>&#160;</div><div class="line"><a name="l05680"></a><span class="lineno"> 5680</span>&#160;</div><div class="line"><a name="l05681"></a><span class="lineno"> 5681</span>&#160;    Big&lt;exp,man&gt; &amp; operator/=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; ss2)</div><div class="line"><a name="l05682"></a><span class="lineno"> 5682</span>&#160;    {</div><div class="line"><a name="l05683"></a><span class="lineno"> 5683</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">Div</a>(ss2);</div><div class="line"><a name="l05684"></a><span class="lineno"> 5684</span>&#160;</div><div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>&#160;    }</div><div class="line"><a name="l05687"></a><span class="lineno"> 5687</span>&#160;</div><div class="line"><a name="l05688"></a><span class="lineno"> 5688</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05689"></a><span class="lineno"> 5689</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05690"></a><span class="lineno"> 5690</span>&#160;<span class="comment">        Prefix operator e.g ++variable</span></div><div class="line"><a name="l05691"></a><span class="lineno"> 5691</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05692"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac26abc00889171efdd2afa61454567c9"> 5692</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; <a class="code" href="classttmath_1_1_big.html#ac26abc00889171efdd2afa61454567c9">operator++</a>()</div><div class="line"><a name="l05693"></a><span class="lineno"> 5693</span>&#160;    {</div><div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>&#160;        AddOne();</div><div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>&#160;</div><div class="line"><a name="l05696"></a><span class="lineno"> 5696</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05697"></a><span class="lineno"> 5697</span>&#160;    }</div><div class="line"><a name="l05698"></a><span class="lineno"> 5698</span>&#160;</div><div class="line"><a name="l05699"></a><span class="lineno"> 5699</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05700"></a><span class="lineno"> 5700</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05701"></a><span class="lineno"> 5701</span>&#160;<span class="comment">        Postfix operator e.g variable++</span></div><div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05703"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ac60dd6aef7757f1232477a89b41edae8"> 5703</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> <a class="code" href="classttmath_1_1_big.html#ac60dd6aef7757f1232477a89b41edae8">operator++</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l05704"></a><span class="lineno"> 5704</span>&#160;    {</div><div class="line"><a name="l05705"></a><span class="lineno"> 5705</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> temp( *<span class="keyword">this</span> );</div><div class="line"><a name="l05706"></a><span class="lineno"> 5706</span>&#160;</div><div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>&#160;        AddOne();</div><div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>&#160;</div><div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>&#160;    }</div><div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>&#160;</div><div class="line"><a name="l05712"></a><span class="lineno"> 5712</span>&#160;</div><div class="line"><a name="l05713"></a><span class="lineno"> 5713</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; operator--()</div><div class="line"><a name="l05714"></a><span class="lineno"> 5714</span>&#160;    {</div><div class="line"><a name="l05715"></a><span class="lineno"> 5715</span>&#160;        SubOne();</div><div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>&#160;</div><div class="line"><a name="l05717"></a><span class="lineno"> 5717</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05718"></a><span class="lineno"> 5718</span>&#160;    }</div><div class="line"><a name="l05719"></a><span class="lineno"> 5719</span>&#160;</div><div class="line"><a name="l05720"></a><span class="lineno"> 5720</span>&#160;</div><div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>&#160;    Big&lt;exp,man&gt; operator--(<span class="keywordtype">int</span>)</div><div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>&#160;    {</div><div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>&#160;    Big&lt;exp,man&gt; temp( *<span class="keyword">this</span> );</div><div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>&#160;</div><div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>&#160;        SubOne();</div><div class="line"><a name="l05726"></a><span class="lineno"> 5726</span>&#160;</div><div class="line"><a name="l05727"></a><span class="lineno"> 5727</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05728"></a><span class="lineno"> 5728</span>&#160;    }</div><div class="line"><a name="l05729"></a><span class="lineno"> 5729</span>&#160;</div><div class="line"><a name="l05730"></a><span class="lineno"> 5730</span>&#160;</div><div class="line"><a name="l05731"></a><span class="lineno"> 5731</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05732"></a><span class="lineno"> 5732</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05733"></a><span class="lineno"> 5733</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05734"></a><span class="lineno"> 5734</span>&#160;<span class="comment">    *   bitwise operators</span></div><div class="line"><a name="l05735"></a><span class="lineno"> 5735</span>&#160;<span class="comment">    *   (we do not define bitwise not)</span></div><div class="line"><a name="l05736"></a><span class="lineno"> 5736</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05737"></a><span class="lineno"> 5737</span>&#160;</div><div class="line"><a name="l05738"></a><span class="lineno"> 5738</span>&#160;</div><div class="line"><a name="l05739"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a9e15cbcd6ebc80d00887fea7396c77d5"> 5739</a></span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> <a class="code" href="classttmath_1_1_big.html#a9e15cbcd6ebc80d00887fea7396c77d5">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; p2)<span class="keyword"> const</span></div><div class="line"><a name="l05740"></a><span class="lineno"> 5740</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05741"></a><span class="lineno"> 5741</span>&#160;        <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> temp( *<span class="keyword">this</span> );</div><div class="line"><a name="l05742"></a><span class="lineno"> 5742</span>&#160;</div><div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>&#160;        temp.<a class="code" href="classttmath_1_1_big.html#afd2e1ded5ff360db5f2b6e1b98fb360f">BitAnd</a>(p2);</div><div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>&#160;</div><div class="line"><a name="l05745"></a><span class="lineno"> 5745</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05746"></a><span class="lineno"> 5746</span>&#160;    }</div><div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>&#160;</div><div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>&#160;</div><div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; operator&amp;=(<span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; p2)</div><div class="line"><a name="l05750"></a><span class="lineno"> 5750</span>&#160;    {</div><div class="line"><a name="l05751"></a><span class="lineno"> 5751</span>&#160;        <a class="code" href="classttmath_1_1_big.html#afd2e1ded5ff360db5f2b6e1b98fb360f">BitAnd</a>(p2);</div><div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>&#160;</div><div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>&#160;    }</div><div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>&#160;</div><div class="line"><a name="l05756"></a><span class="lineno"> 5756</span>&#160;</div><div class="line"><a name="l05757"></a><span class="lineno"> 5757</span>&#160;    Big&lt;exp,man&gt; operator|(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; p2)<span class="keyword"> const</span></div><div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>&#160;        Big&lt;exp,man&gt; temp( *<span class="keyword">this</span> );</div><div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>&#160;</div><div class="line"><a name="l05761"></a><span class="lineno"> 5761</span>&#160;        temp.BitOr(p2);</div><div class="line"><a name="l05762"></a><span class="lineno"> 5762</span>&#160;</div><div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05764"></a><span class="lineno"> 5764</span>&#160;    }</div><div class="line"><a name="l05765"></a><span class="lineno"> 5765</span>&#160;</div><div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>&#160;</div><div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>&#160;    Big&lt;exp,man&gt; &amp; operator|=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; p2)</div><div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>&#160;    {</div><div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>&#160;        <a class="code" href="classttmath_1_1_big.html#ae050abccee92058b55a9a890350eb23d">BitOr</a>(p2);</div><div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>&#160;</div><div class="line"><a name="l05771"></a><span class="lineno"> 5771</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05772"></a><span class="lineno"> 5772</span>&#160;    }</div><div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>&#160;</div><div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>&#160;</div><div class="line"><a name="l05775"></a><span class="lineno"> 5775</span>&#160;    Big&lt;exp,man&gt; operator^(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; p2)<span class="keyword"> const</span></div><div class="line"><a name="l05776"></a><span class="lineno"> 5776</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>&#160;        Big&lt;exp,man&gt; temp( *<span class="keyword">this</span> );</div><div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>&#160;</div><div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>&#160;        temp.BitXor(p2);</div><div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>&#160;</div><div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>&#160;    <span class="keywordflow">return</span> temp;</div><div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>&#160;    }</div><div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>&#160;</div><div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>&#160;</div><div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>&#160;    Big&lt;exp,man&gt; &amp; operator^=(<span class="keyword">const</span> Big&lt;exp,man&gt; &amp; p2)</div><div class="line"><a name="l05786"></a><span class="lineno"> 5786</span>&#160;    {</div><div class="line"><a name="l05787"></a><span class="lineno"> 5787</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a7d291abddb1d43ca4784ba152cdd6d25">BitXor</a>(p2);</div><div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>&#160;</div><div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>&#160;    }</div><div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>&#160;</div><div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>&#160;</div><div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>&#160;</div><div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>&#160;</div><div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>&#160;</div><div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>&#160;<span class="comment">        this method makes an integer value by skipping any fractions</span></div><div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>&#160;<span class="comment">        samples:</span></div><div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>&#160;<span class="comment">        -   10.7 will be 10</span></div><div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>&#160;<span class="comment">        -   12.1  -- 12</span></div><div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>&#160;<span class="comment">        -   -20.2 -- 20</span></div><div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>&#160;<span class="comment">        -   -20.9 -- 20</span></div><div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>&#160;<span class="comment">        -   -0.7  -- 0</span></div><div class="line"><a name="l05806"></a><span class="lineno"> 5806</span>&#160;<span class="comment">        -   0.8   -- 0</span></div><div class="line"><a name="l05807"></a><span class="lineno"> 5807</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05808"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a6ae448d3c59f28495d6951bd688ed485"> 5808</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a6ae448d3c59f28495d6951bd688ed485">SkipFraction</a>()</div><div class="line"><a name="l05809"></a><span class="lineno"> 5809</span>&#160;    {</div><div class="line"><a name="l05810"></a><span class="lineno"> 5810</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05812"></a><span class="lineno"> 5812</span>&#160;</div><div class="line"><a name="l05813"></a><span class="lineno"> 5813</span>&#160;        <span class="keywordflow">if</span>( !exponent.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l05814"></a><span class="lineno"> 5814</span>&#160;            <span class="comment">// exponent &gt;=0 -- the value don&#39;t have any fractions</span></div><div class="line"><a name="l05815"></a><span class="lineno"> 5815</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05816"></a><span class="lineno"> 5816</span>&#160;</div><div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>&#160;        {</div><div class="line"><a name="l05819"></a><span class="lineno"> 5819</span>&#160;            <span class="comment">// the value is from (-1,1), we return zero</span></div><div class="line"><a name="l05820"></a><span class="lineno"> 5820</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l05821"></a><span class="lineno"> 5821</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>&#160;        }</div><div class="line"><a name="l05823"></a><span class="lineno"> 5823</span>&#160;</div><div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>&#160;        <span class="comment">// exponent is in range (-man*TTMATH_BITS_PER_UINT, 0)</span></div><div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l05826"></a><span class="lineno"> 5826</span>&#160;    </div><div class="line"><a name="l05827"></a><span class="lineno"> 5827</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#a60e97560d5f03d2321130a33fd24c74c">ClearFirstBits</a>( -e );</div><div class="line"><a name="l05828"></a><span class="lineno"> 5828</span>&#160;        </div><div class="line"><a name="l05829"></a><span class="lineno"> 5829</span>&#160;        <span class="comment">// we don&#39;t have to standardize &#39;Standardizing()&#39; the value because</span></div><div class="line"><a name="l05830"></a><span class="lineno"> 5830</span>&#160;        <span class="comment">// there&#39;s at least one bit in the mantissa</span></div><div class="line"><a name="l05831"></a><span class="lineno"> 5831</span>&#160;        <span class="comment">// (the highest bit which we didn&#39;t touch)</span></div><div class="line"><a name="l05832"></a><span class="lineno"> 5832</span>&#160;    }</div><div class="line"><a name="l05833"></a><span class="lineno"> 5833</span>&#160;</div><div class="line"><a name="l05834"></a><span class="lineno"> 5834</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05835"></a><span class="lineno"> 5835</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05836"></a><span class="lineno"> 5836</span>&#160;<span class="comment">        this method remains only a fraction from the value</span></div><div class="line"><a name="l05837"></a><span class="lineno"> 5837</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05838"></a><span class="lineno"> 5838</span>&#160;<span class="comment">        samples:</span></div><div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>&#160;<span class="comment">        -   30.56 will be 0.56</span></div><div class="line"><a name="l05840"></a><span class="lineno"> 5840</span>&#160;<span class="comment">        -   -12.67 will be -0.67</span></div><div class="line"><a name="l05841"></a><span class="lineno"> 5841</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05842"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a05220c77273e378d803d25085a129e71"> 5842</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classttmath_1_1_big.html#a05220c77273e378d803d25085a129e71">RemainFraction</a>()</div><div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>&#160;    {</div><div class="line"><a name="l05844"></a><span class="lineno"> 5844</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() || <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>&#160;</div><div class="line"><a name="l05847"></a><span class="lineno"> 5847</span>&#160;        <span class="keywordflow">if</span>( !exponent.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l05848"></a><span class="lineno"> 5848</span>&#160;        {</div><div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>&#160;            <span class="comment">// exponent &gt;= 0 -- the value doesn&#39;t have any fractions</span></div><div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>&#160;            <span class="comment">// we return zero</span></div><div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>&#160;            <a class="code" href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">SetZero</a>();</div><div class="line"><a name="l05852"></a><span class="lineno"> 5852</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05853"></a><span class="lineno"> 5853</span>&#160;        }</div><div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>&#160;</div><div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l05856"></a><span class="lineno"> 5856</span>&#160;        {</div><div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>&#160;            <span class="comment">// the value is from (-1,1)</span></div><div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>&#160;            <span class="comment">// we don&#39;t make anything with the value</span></div><div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>&#160;        }</div><div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>&#160;</div><div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>&#160;        <span class="comment">// e will be from (-man*TTMATH_BITS_PER_UINT, 0)</span></div><div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>&#160;</div><div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> how_many_bits_leave = <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) + e; <span class="comment">// there&#39;ll be a subtraction -- e is negative</span></div><div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>&#160;        mantissa.<a class="code" href="classttmath_1_1_u_int.html#abbcc02c03802229412f902de309bad7d">Rcl</a>( how_many_bits_leave, 0);</div><div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>&#160;</div><div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>&#160;        <span class="comment">// there&#39;ll not be a carry because the exponent is too small</span></div><div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>&#160;        exponent.<a class="code" href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">Sub</a>( how_many_bits_leave );</div><div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>&#160;</div><div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>&#160;        <span class="comment">// we must call Standardizing() here</span></div><div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>&#160;        <a class="code" href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">Standardizing</a>();</div><div class="line"><a name="l05873"></a><span class="lineno"> 5873</span>&#160;    }</div><div class="line"><a name="l05874"></a><span class="lineno"> 5874</span>&#160;</div><div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>&#160;</div><div class="line"><a name="l05876"></a><span class="lineno"> 5876</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05877"></a><span class="lineno"> 5877</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05878"></a><span class="lineno"> 5878</span>&#160;<span class="comment">        this method returns true if the value is integer</span></div><div class="line"><a name="l05879"></a><span class="lineno"> 5879</span>&#160;<span class="comment">        (there is no a fraction)</span></div><div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05881"></a><span class="lineno"> 5881</span>&#160;<span class="comment">        (we don&#39;t check NaN)</span></div><div class="line"><a name="l05882"></a><span class="lineno"> 5882</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05883"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c"> 5883</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">IsInteger</a>()<span class="keyword"> const</span></div><div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05887"></a><span class="lineno"> 5887</span>&#160;</div><div class="line"><a name="l05888"></a><span class="lineno"> 5888</span>&#160;        <span class="keywordflow">if</span>( !exponent.<a class="code" href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">IsSign</a>() )</div><div class="line"><a name="l05889"></a><span class="lineno"> 5889</span>&#160;            <span class="comment">// exponent &gt;=0 -- the value don&#39;t have any fractions</span></div><div class="line"><a name="l05890"></a><span class="lineno"> 5890</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05891"></a><span class="lineno"> 5891</span>&#160;</div><div class="line"><a name="l05892"></a><span class="lineno"> 5892</span>&#160;        <span class="keywordflow">if</span>( exponent &lt;= -<a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a>(man*<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>) )</div><div class="line"><a name="l05893"></a><span class="lineno"> 5893</span>&#160;            <span class="comment">// the value is from (-1,1)</span></div><div class="line"><a name="l05894"></a><span class="lineno"> 5894</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05895"></a><span class="lineno"> 5895</span>&#160;</div><div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>&#160;        <span class="comment">// exponent is in range (-man*TTMATH_BITS_PER_UINT, 0)</span></div><div class="line"><a name="l05897"></a><span class="lineno"> 5897</span>&#160;        <a class="code" href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">sint</a> e = exponent.<a class="code" href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ToInt</a>();</div><div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>&#160;        e = -e; <span class="comment">// e means how many bits we must check</span></div><div class="line"><a name="l05899"></a><span class="lineno"> 5899</span>&#160;</div><div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> len  = e / <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l05901"></a><span class="lineno"> 5901</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> rest = e % <a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a>;</div><div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>&#160;        <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> i    = 0;</div><div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>&#160;</div><div class="line"><a name="l05904"></a><span class="lineno"> 5904</span>&#160;        <span class="keywordflow">for</span>( ; i&lt;len ; ++i )</div><div class="line"><a name="l05905"></a><span class="lineno"> 5905</span>&#160;            <span class="keywordflow">if</span>( mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] != 0 )</div><div class="line"><a name="l05906"></a><span class="lineno"> 5906</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05907"></a><span class="lineno"> 5907</span>&#160;</div><div class="line"><a name="l05908"></a><span class="lineno"> 5908</span>&#160;        <span class="keywordflow">if</span>( rest &gt; 0 )</div><div class="line"><a name="l05909"></a><span class="lineno"> 5909</span>&#160;        {</div><div class="line"><a name="l05910"></a><span class="lineno"> 5910</span>&#160;            <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> rest_mask = <a class="code" href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a> &gt;&gt; (<a class="code" href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a> - rest);</div><div class="line"><a name="l05911"></a><span class="lineno"> 5911</span>&#160;            <span class="keywordflow">if</span>( (mantissa.<a class="code" href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">table</a>[i] &amp; rest_mask) != 0 )</div><div class="line"><a name="l05912"></a><span class="lineno"> 5912</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05913"></a><span class="lineno"> 5913</span>&#160;        }</div><div class="line"><a name="l05914"></a><span class="lineno"> 5914</span>&#160;</div><div class="line"><a name="l05915"></a><span class="lineno"> 5915</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l05916"></a><span class="lineno"> 5916</span>&#160;    }</div><div class="line"><a name="l05917"></a><span class="lineno"> 5917</span>&#160;</div><div class="line"><a name="l05918"></a><span class="lineno"> 5918</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05919"></a><span class="lineno"> 5919</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05920"></a><span class="lineno"> 5920</span>&#160;<span class="comment">        this method rounds to the nearest integer value</span></div><div class="line"><a name="l05921"></a><span class="lineno"> 5921</span>&#160;<span class="comment">        (it returns a carry if it was)</span></div><div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05923"></a><span class="lineno"> 5923</span>&#160;<span class="comment">        samples:</span></div><div class="line"><a name="l05924"></a><span class="lineno"> 5924</span>&#160;<span class="comment">        -   2.3 = 2</span></div><div class="line"><a name="l05925"></a><span class="lineno"> 5925</span>&#160;<span class="comment">        -   2.8 = 3</span></div><div class="line"><a name="l05926"></a><span class="lineno"> 5926</span>&#160;<span class="comment">        -   -2.3 = -2</span></div><div class="line"><a name="l05927"></a><span class="lineno"> 5927</span>&#160;<span class="comment">        -   -2.8 = 3</span></div><div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05929"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a01fd17a7bc3beda037834bb954460295"> 5929</a></span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> <a class="code" href="classttmath_1_1_big.html#a01fd17a7bc3beda037834bb954460295">Round</a>()</div><div class="line"><a name="l05930"></a><span class="lineno"> 5930</span>&#160;    {</div><div class="line"><a name="l05931"></a><span class="lineno"> 5931</span>&#160;    <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> half;</div><div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>&#160;    <a class="code" href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">uint</a> c;</div><div class="line"><a name="l05933"></a><span class="lineno"> 5933</span>&#160;</div><div class="line"><a name="l05934"></a><span class="lineno"> 5934</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">IsNan</a>() )</div><div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>&#160;            <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>&#160;</div><div class="line"><a name="l05937"></a><span class="lineno"> 5937</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">IsZero</a>() )</div><div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>&#160;</div><div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>&#160;        half.<a class="code" href="classttmath_1_1_big.html#add0ae88434679a663de0f5b3822d0146">Set05</a>();</div><div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>&#160;</div><div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>&#160;        <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">IsSign</a>() )</div><div class="line"><a name="l05943"></a><span class="lineno"> 5943</span>&#160;        {</div><div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>&#160;            <span class="comment">// &#39;this&#39; is &lt; 0</span></div><div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>&#160;            c = <a class="code" href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">Sub</a>( half );</div><div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>&#160;        }</div><div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>&#160;        {</div><div class="line"><a name="l05949"></a><span class="lineno"> 5949</span>&#160;            <span class="comment">// &#39;this&#39; is &gt; 0</span></div><div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>&#160;            c = <a class="code" href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">Add</a>( half );</div><div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>&#160;        }</div><div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>&#160;</div><div class="line"><a name="l05953"></a><span class="lineno"> 5953</span>&#160;        <a class="code" href="classttmath_1_1_big.html#a6ae448d3c59f28495d6951bd688ed485">SkipFraction</a>();</div><div class="line"><a name="l05954"></a><span class="lineno"> 5954</span>&#160;</div><div class="line"><a name="l05955"></a><span class="lineno"> 5955</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">CheckCarry</a>(c);</div><div class="line"><a name="l05956"></a><span class="lineno"> 5956</span>&#160;    }</div><div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>&#160;</div><div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>&#160;    </div><div class="line"><a name="l05959"></a><span class="lineno"> 5959</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05960"></a><span class="lineno"> 5960</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05961"></a><span class="lineno"> 5961</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05962"></a><span class="lineno"> 5962</span>&#160;<span class="comment">    *   input/output operators for standard streams</span></div><div class="line"><a name="l05963"></a><span class="lineno"> 5963</span>&#160;<span class="comment">    *</span></div><div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05965"></a><span class="lineno"> 5965</span>&#160;</div><div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l05967"></a><span class="lineno"> 5967</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05968"></a><span class="lineno"> 5968</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05969"></a><span class="lineno"> 5969</span>&#160;<span class="comment">        an auxiliary method for outputing to standard streams</span></div><div class="line"><a name="l05970"></a><span class="lineno"> 5970</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05971"></a><span class="lineno"> 5971</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> ostream_type, <span class="keyword">class</span> <span class="keywordtype">string</span>_type&gt;</div><div class="line"><a name="l05972"></a><span class="lineno"> 5972</span>&#160;    <span class="keyword">static</span> ostream_type &amp; OutputToStream(ostream_type &amp; s, <span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l05973"></a><span class="lineno"> 5973</span>&#160;    {</div><div class="line"><a name="l05974"></a><span class="lineno"> 5974</span>&#160;    string_type ss;</div><div class="line"><a name="l05975"></a><span class="lineno"> 5975</span>&#160;</div><div class="line"><a name="l05976"></a><span class="lineno"> 5976</span>&#160;        l.<a class="code" href="classttmath_1_1_big.html#a3d8da6a88dda87845a13a13c8abfcfa4">ToString</a>(ss);</div><div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>&#160;        s &lt;&lt; ss;</div><div class="line"><a name="l05978"></a><span class="lineno"> 5978</span>&#160;</div><div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>&#160;    <span class="keywordflow">return</span> s;</div><div class="line"><a name="l05980"></a><span class="lineno"> 5980</span>&#160;    }</div><div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>&#160;</div><div class="line"><a name="l05982"></a><span class="lineno"> 5982</span>&#160;</div><div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>&#160;</div><div class="line"><a name="l05985"></a><span class="lineno"> 5985</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>&#160;<span class="comment">        output to standard streams</span></div><div class="line"><a name="l05988"></a><span class="lineno"> 5988</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l05989"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ae6d2562c5a95d6e366bf5ef16f78ffc1"> 5989</a></span>&#160;    <span class="keyword">friend</span> std::ostream &amp; <a class="code" href="classttmath_1_1_big.html#ae6d2562c5a95d6e366bf5ef16f78ffc1">operator&lt;&lt;</a>(std::ostream &amp; s,  <span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>&#160;    {</div><div class="line"><a name="l05991"></a><span class="lineno"> 5991</span>&#160;        <span class="keywordflow">return</span> OutputToStream&lt;std::ostream, std::string&gt;(s, l);</div><div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>&#160;    }</div><div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>&#160;</div><div class="line"><a name="l05994"></a><span class="lineno"> 5994</span>&#160;</div><div class="line"><a name="l05995"></a><span class="lineno"> 5995</span>&#160;<span class="preprocessor">#ifndef TTMATH_DONT_USE_WCHAR</span></div><div class="line"><a name="l05996"></a><span class="lineno"> 5996</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>&#160;<span class="comment">        output to standard streams</span></div><div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l06000"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a97f04b97ae04cf39464b9f0bb0bd3a81"> 6000</a></span>&#160;    <span class="keyword">friend</span> std::wostream &amp; <a class="code" href="classttmath_1_1_big.html#a97f04b97ae04cf39464b9f0bb0bd3a81">operator&lt;&lt;</a>(std::wostream &amp; s,  <span class="keyword">const</span> <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>&#160;    {</div><div class="line"><a name="l06002"></a><span class="lineno"> 6002</span>&#160;        <span class="keywordflow">return</span> OutputToStream&lt;std::wostream, std::wstring&gt;(s, l);</div><div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>&#160;    }</div><div class="line"><a name="l06004"></a><span class="lineno"> 6004</span>&#160;</div><div class="line"><a name="l06005"></a><span class="lineno"> 6005</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>&#160;</div><div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>&#160;</div><div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>&#160;</div><div class="line"><a name="l06009"></a><span class="lineno"> 6009</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l06010"></a><span class="lineno"> 6010</span>&#160;<span class="comment"></span></div><div class="line"><a name="l06011"></a><span class="lineno"> 6011</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l06012"></a><span class="lineno"> 6012</span>&#160;<span class="comment">        an auxiliary method for converting from a string</span></div><div class="line"><a name="l06013"></a><span class="lineno"> 6013</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l06014"></a><span class="lineno"> 6014</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> istream_type, <span class="keyword">class</span> <span class="keywordtype">string</span>_type, <span class="keyword">class</span> <span class="keywordtype">char</span>_type&gt;</div><div class="line"><a name="l06015"></a><span class="lineno"> 6015</span>&#160;    <span class="keyword">static</span> istream_type &amp; InputFromStream(istream_type &amp; s, <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l06016"></a><span class="lineno"> 6016</span>&#160;    {</div><div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>&#160;    string_type ss;</div><div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>&#160;    </div><div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>&#160;    <span class="comment">// char or wchar_t for operator&gt;&gt;</span></div><div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>&#160;    char_type z, old_z;</div><div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>&#160;    <span class="keywordtype">bool</span> was_comma = <span class="keyword">false</span>;</div><div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>&#160;    <span class="keywordtype">bool</span> was_e     = <span class="keyword">false</span>;</div><div class="line"><a name="l06023"></a><span class="lineno"> 6023</span>&#160;    </div><div class="line"><a name="l06024"></a><span class="lineno"> 6024</span>&#160;</div><div class="line"><a name="l06025"></a><span class="lineno"> 6025</span>&#160;        <span class="comment">// operator&gt;&gt; omits white characters if they&#39;re set for ommiting</span></div><div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>&#160;        s &gt;&gt; z;</div><div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>&#160;</div><div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>&#160;        <span class="keywordflow">if</span>( z==<span class="charliteral">&#39;-&#39;</span> || z==<span class="charliteral">&#39;+&#39;</span> )</div><div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>&#160;        {</div><div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>&#160;            ss += z;</div><div class="line"><a name="l06031"></a><span class="lineno"> 6031</span>&#160;            s &gt;&gt; z; <span class="comment">// we&#39;re reading a next character (white characters can be ommited)</span></div><div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>&#160;        }</div><div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>&#160;        </div><div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>&#160;        old_z = 0;</div><div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>&#160;</div><div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>&#160;        <span class="comment">// we&#39;re reading only digits (base=10) and only one comma operator</span></div><div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>&#160;        <span class="keywordflow">for</span>( ; s.good() ; z=static_cast&lt;char_type&gt;(s.get()) )</div><div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>&#160;        {</div><div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>&#160;            <span class="keywordflow">if</span>( z==<span class="charliteral">&#39;.&#39;</span> ||  z==<span class="charliteral">&#39;,&#39;</span> )</div><div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>&#160;            {</div><div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>&#160;                <span class="keywordflow">if</span>( was_comma || was_e )</div><div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>&#160;                    <span class="comment">// second comma operator or comma operator after &#39;e&#39; character</span></div><div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>&#160;</div><div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>&#160;                was_comma = <span class="keyword">true</span>;</div><div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>&#160;            }</div><div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>&#160;            <span class="keywordflow">if</span>( z == <span class="charliteral">&#39;e&#39;</span> || z == <span class="charliteral">&#39;E&#39;</span> )</div><div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>&#160;            {</div><div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>&#160;                <span class="keywordflow">if</span>( was_e )</div><div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>&#160;                    <span class="comment">// second &#39;e&#39; character</span></div><div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>&#160;</div><div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>&#160;                was_e = <span class="keyword">true</span>;</div><div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>&#160;            }</div><div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>&#160;            <span class="keywordflow">if</span>( z == <span class="charliteral">&#39;+&#39;</span> || z == <span class="charliteral">&#39;-&#39;</span> )</div><div class="line"><a name="l06058"></a><span class="lineno"> 6058</span>&#160;            {</div><div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>&#160;                <span class="keywordflow">if</span>( old_z != <span class="charliteral">&#39;e&#39;</span> &amp;&amp; old_z != <span class="charliteral">&#39;E&#39;</span> )</div><div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>&#160;                    <span class="comment">// &#39;+&#39; or &#39;-&#39; is allowed only after &#39;e&#39; character</span></div><div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>&#160;            }</div><div class="line"><a name="l06063"></a><span class="lineno"> 6063</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l06064"></a><span class="lineno"> 6064</span>&#160;            <span class="keywordflow">if</span>( <a class="code" href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">Misc::CharToDigit</a>(z, 10) &lt; 0 )</div><div class="line"><a name="l06065"></a><span class="lineno"> 6065</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l06066"></a><span class="lineno"> 6066</span>&#160;</div><div class="line"><a name="l06067"></a><span class="lineno"> 6067</span>&#160;</div><div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>&#160;            ss   += z;</div><div class="line"><a name="l06069"></a><span class="lineno"> 6069</span>&#160;            old_z = z;</div><div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>&#160;        }</div><div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>&#160;</div><div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>&#160;        <span class="comment">// we&#39;re leaving the last read character</span></div><div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>&#160;        <span class="comment">// (it&#39;s not belonging to the value)</span></div><div class="line"><a name="l06074"></a><span class="lineno"> 6074</span>&#160;        s.unget();</div><div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>&#160;</div><div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>&#160;        l.<a class="code" href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">FromString</a>( ss );</div><div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>&#160;</div><div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>&#160;    <span class="keywordflow">return</span> s;</div><div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>&#160;    }</div><div class="line"><a name="l06080"></a><span class="lineno"> 6080</span>&#160;</div><div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>&#160;</div><div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>&#160;</div><div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>&#160;<span class="comment"></span></div><div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>&#160;<span class="comment">        input from standard streams</span></div><div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l06088"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#ad522ab4137846a3a9447eb5d60cca97d"> 6088</a></span>&#160;    <span class="keyword">friend</span> std::istream &amp; <a class="code" href="classttmath_1_1_big.html#ad522ab4137846a3a9447eb5d60cca97d">operator&gt;&gt;</a>(std::istream &amp; s, <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l06089"></a><span class="lineno"> 6089</span>&#160;    {</div><div class="line"><a name="l06090"></a><span class="lineno"> 6090</span>&#160;        <span class="keywordflow">return</span> InputFromStream&lt;std::istream, std::string, char&gt;(s, l);</div><div class="line"><a name="l06091"></a><span class="lineno"> 6091</span>&#160;    }</div><div class="line"><a name="l06092"></a><span class="lineno"> 6092</span>&#160;</div><div class="line"><a name="l06093"></a><span class="lineno"> 6093</span>&#160;</div><div class="line"><a name="l06094"></a><span class="lineno"> 6094</span>&#160;<span class="preprocessor">#ifndef TTMATH_DONT_USE_WCHAR</span></div><div class="line"><a name="l06095"></a><span class="lineno"> 6095</span>&#160;<span class="comment"></span></div><div class="line"><a name="l06096"></a><span class="lineno"> 6096</span>&#160;<span class="comment">    /*!</span></div><div class="line"><a name="l06097"></a><span class="lineno"> 6097</span>&#160;<span class="comment">        input from standard streams</span></div><div class="line"><a name="l06098"></a><span class="lineno"> 6098</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l06099"></a><span class="lineno"><a class="line" href="classttmath_1_1_big.html#a90c19948437cc5db98999d1d59a092ab"> 6099</a></span>&#160;    <span class="keyword">friend</span> std::wistream &amp; <a class="code" href="classttmath_1_1_big.html#a90c19948437cc5db98999d1d59a092ab">operator&gt;&gt;</a>(std::wistream &amp; s, <a class="code" href="classttmath_1_1_big.html">Big&lt;exp,man&gt;</a> &amp; l)</div><div class="line"><a name="l06100"></a><span class="lineno"> 6100</span>&#160;    {</div><div class="line"><a name="l06101"></a><span class="lineno"> 6101</span>&#160;        <span class="keywordflow">return</span> InputFromStream&lt;std::wistream, std::wstring, wchar_t&gt;(s, l);</div><div class="line"><a name="l06102"></a><span class="lineno"> 6102</span>&#160;    }</div><div class="line"><a name="l06103"></a><span class="lineno"> 6103</span>&#160;</div><div class="line"><a name="l06104"></a><span class="lineno"> 6104</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>&#160;</div><div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>&#160;};</div><div class="line"><a name="l06107"></a><span class="lineno"> 6107</span>&#160;</div><div class="line"><a name="l06108"></a><span class="lineno"> 6108</span>&#160;</div><div class="line"><a name="l06109"></a><span class="lineno"> 6109</span>&#160;} <span class="comment">// namespace</span></div><div class="line"><a name="l06110"></a><span class="lineno"> 6110</span>&#160;</div><div class="line"><a name="l06111"></a><span class="lineno"> 6111</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classttmath_1_1_u_int_html_a12602f12aa9618ac8a24d151b9cea650"><div class="ttname"><a href="classttmath_1_1_u_int.html#a12602f12aa9618ac8a24d151b9cea650">ttmath::UInt::SetFromTable</a></div><div class="ttdeci">void SetFromTable(const unsigned int *temp_table, uint temp_table_len)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00325">ttmathuint.h:325</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a7825c0764bf6b746be5f0775dc704f54"><div class="ttname"><a href="classttmath_1_1_big.html#a7825c0764bf6b746be5f0775dc704f54">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(UInt&lt; int_size &gt; &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02504">ttmathbig.h:2504</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a0963350876a5d4b23e9c6f1e021cfa2c"><div class="ttname"><a href="classttmath_1_1_big.html#a0963350876a5d4b23e9c6f1e021cfa2c">ttmath::Big::PowFrac</a></div><div class="ttdeci">uint PowFrac(const Big&lt; exp, man &gt; &amp;pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01767">ttmathbig.h:1767</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a6e6b6458935b167e3301c72c280b0670"><div class="ttname"><a href="classttmath_1_1_big.html#a6e6b6458935b167e3301c72c280b0670">ttmath::Big::ToFloat</a></div><div class="ttdeci">uint ToFloat(float &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02941">ttmathbig.h:2941</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a7464feaf986422898a2dd1e66e73784f"><div class="ttname"><a href="classttmath_1_1_big.html#a7464feaf986422898a2dd1e66e73784f">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(signed int &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03410">ttmathbig.h:3410</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac205056b86c652cb859287118a7cfae9"><div class="ttname"><a href="classttmath_1_1_big.html#ac205056b86c652cb859287118a7cfae9">ttmath::Big::SetLn10</a></div><div class="ttdeci">void SetLn10()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00558">ttmathbig.h:558</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a3d8da6a88dda87845a13a13c8abfcfa4"><div class="ttname"><a href="classttmath_1_1_big.html#a3d8da6a88dda87845a13a13c8abfcfa4">ttmath::Big::ToString</a></div><div class="ttdeci">uint ToString(std::string &amp;result, uint base=10, bool scient=false, sint scient_from=15, sint round=-1, bool trim_zeroes=true, char comma='.') const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03715">ttmathbig.h:3715</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_add0ae88434679a663de0f5b3822d0146"><div class="ttname"><a href="classttmath_1_1_big.html#add0ae88434679a663de0f5b3822d0146">ttmath::Big::Set05</a></div><div class="ttdeci">void Set05()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00285">ttmathbig.h:285</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_abbcc02c03802229412f902de309bad7d"><div class="ttname"><a href="classttmath_1_1_u_int.html#abbcc02c03802229412f902de309bad7d">ttmath::UInt::Rcl</a></div><div class="ttdeci">uint Rcl(uint bits, uint c=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00460">ttmathuint.h:460</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html"><div class="ttname"><a href="classttmath_1_1_int.html">ttmath::Int&lt; exp &gt;</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ab448e5aab3cd9ec3cba573cba2a0ec9f"><div class="ttname"><a href="classttmath_1_1_big.html#ab448e5aab3cd9ec3cba573cba2a0ec9f">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const Big&lt; another_exp, another_man &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03630">ttmathbig.h:3630</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a71d39cd10c72a302dc3f786b76a4b790"><div class="ttname"><a href="classttmath_1_1_big.html#a71d39cd10c72a302dc3f786b76a4b790">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(uint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03130">ttmathbig.h:3130</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ada7e166f426b5adbd1e539040d5a5e14"><div class="ttname"><a href="classttmath_1_1_big.html#ada7e166f426b5adbd1e539040d5a5e14">ttmath::Big::ToUInt</a></div><div class="ttdeci">uint ToUInt() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02336">ttmathbig.h:2336</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a8757d0e23a961f99ce15fa6e844bc526"><div class="ttname"><a href="classttmath_1_1_big.html#a8757d0e23a961f99ce15fa6e844bc526">ttmath::Big::FromInt</a></div><div class="ttdeci">uint FromInt(sint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02573">ttmathbig.h:2573</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ab5fd85926cbbebae5b5ccfe5249a446b"><div class="ttname"><a href="classttmath_1_1_big.html#ab5fd85926cbbebae5b5ccfe5249a446b">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(float value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03141">ttmathbig.h:3141</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html"><div class="ttname"><a href="structttmath_1_1_conv.html">ttmath::Conv</a></div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00407">ttmathtypes.h:407</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_abd656baf05f508405a599a82faadec49"><div class="ttname"><a href="classttmath_1_1_big.html#abd656baf05f508405a599a82faadec49">ttmath::Big::FromInt</a></div><div class="ttdeci">uint FromInt(Int&lt; int_size &gt; value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03561">ttmathbig.h:3561</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a71805011593c0be2e134dae8d71983ea"><div class="ttname"><a href="classttmath_1_1_big.html#a71805011593c0be2e134dae8d71983ea">ttmath::Big::SetZeroNan</a></div><div class="ttdeci">void SetZeroNan()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00306">ttmathbig.h:306</a></div></div>
<div class="ttc" id="classttmath_1_1_misc_html_a37c769adf7e2cb8a7533d04dea080ebf"><div class="ttname"><a href="classttmath_1_1_misc.html#a37c769adf7e2cb8a7533d04dea080ebf">ttmath::Misc::CharToDigit</a></div><div class="ttdeci">static uint CharToDigit(uint c)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathmisc_8h_source.html#l00181">ttmathmisc.h:181</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_a3a26c74e34f27589bfceefd0f2e497a8"><div class="ttname"><a href="ttmathtypes_8h.html#a3a26c74e34f27589bfceefd0f2e497a8">TTMATH_ARITHMETIC_MAX_LOOP</a></div><div class="ttdeci">#define TTMATH_ARITHMETIC_MAX_LOOP</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00310">ttmathtypes.h:310</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a05220c77273e378d803d25085a129e71"><div class="ttname"><a href="classttmath_1_1_big.html#a05220c77273e378d803d25085a129e71">ttmath::Big::RemainFraction</a></div><div class="ttdeci">void RemainFraction()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05842">ttmathbig.h:5842</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac8f89807eb1878d93d76fe609f4a6b42"><div class="ttname"><a href="classttmath_1_1_big.html#ac8f89807eb1878d93d76fe609f4a6b42">ttmath::Big::IsSign</a></div><div class="ttdeci">bool IsSign() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00658">ttmathbig.h:658</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a0681595612114e8ab1dc9c8f3e8590e7"><div class="ttname"><a href="classttmath_1_1_big.html#a0681595612114e8ab1dc9c8f3e8590e7">ttmath::Big::CheckCarry</a></div><div class="ttdeci">uint CheckCarry(uint c)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00121">ttmathbig.h:121</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_aac79577f141c39adea40a9ab6842280e"><div class="ttname"><a href="structttmath_1_1_conv.html#aac79577f141c39adea40a9ab6842280e">ttmath::Conv::scient_from</a></div><div class="ttdeci">sint scient_from</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00430">ttmathtypes.h:430</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa4a581c558d22d3c086819d5854f6cab"><div class="ttname"><a href="classttmath_1_1_big.html#aa4a581c558d22d3c086819d5854f6cab">ttmath::Big::LibType</a></div><div class="ttdeci">static LibTypeCode LibType()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00154">ttmathbig.h:154</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_a2df433a7aa1269e9e88259c617606e9d"><div class="ttname"><a href="structttmath_1_1_conv.html#a2df433a7aa1269e9e88259c617606e9d">ttmath::Conv::scient</a></div><div class="ttdeci">bool scient</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00421">ttmathtypes.h:421</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acad4eec61a4e9b96ea604681b0428199"><div class="ttname"><a href="classttmath_1_1_big.html#acad4eec61a4e9b96ea604681b0428199">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const wchar_t *source, const Conv &amp;conv, const wchar_t **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05002">ttmathbig.h:5002</a></div></div>
<div class="ttc" id="classttmath_1_1_misc_html_acfe3356acfeb0a444481e6d6ccb5ba78"><div class="ttname"><a href="classttmath_1_1_misc.html#acfe3356acfeb0a444481e6d6ccb5ba78">ttmath::Misc::AddString</a></div><div class="ttdeci">static void AddString(std::string &amp;result, const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathmisc_8h_source.html#l00135">ttmathmisc.h:135</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a1e706c3bfa40fab6ff3957678e351750"><div class="ttname"><a href="classttmath_1_1_big.html#a1e706c3bfa40fab6ff3957678e351750">ttmath::Big::ToString</a></div><div class="ttdeci">std::string ToString(uint base=10) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03763">ttmathbig.h:3763</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a54c67e2e3d1a4d6ea96e828d15c4443a"><div class="ttname"><a href="classttmath_1_1_u_int.html#a54c67e2e3d1a4d6ea96e828d15c4443a">ttmath::UInt::table</a></div><div class="ttdeci">uint table[value_size]</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00081">ttmathuint.h:81</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_af44096d7caaaa52ef6f5de03818e7eab"><div class="ttname"><a href="classttmath_1_1_big.html#af44096d7caaaa52ef6f5de03818e7eab">ttmath::Big::Big</a></div><div class="ttdeci">Big()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03658">ttmathbig.h:3658</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a694c79746d5e9ff547b7b507b7a0a82d"><div class="ttname"><a href="classttmath_1_1_big.html#a694c79746d5e9ff547b7b507b7a0a82d">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(sint &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02392">ttmathbig.h:2392</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a8ee2980e2a25efa1779756b3c69ee8a8"><div class="ttname"><a href="classttmath_1_1_big.html#a8ee2980e2a25efa1779756b3c69ee8a8">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const std::wstring &amp;string, uint base=10, const wchar_t **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05011">ttmathbig.h:5011</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_add0cf14a0684fc8e7d8b1471759b35e0"><div class="ttname"><a href="classttmath_1_1_u_int.html#add0cf14a0684fc8e7d8b1471759b35e0">ttmath::UInt::LibTypeStr</a></div><div class="ttdeci">static const char * LibTypeStr()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint__x86__64_8h_source.html#l00108">ttmathuint_x86_64.h:108</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a7983fae3bacfd7705c23cb509d781451"><div class="ttname"><a href="classttmath_1_1_big.html#a7983fae3bacfd7705c23cb509d781451">ttmath::Big::ToFloat</a></div><div class="ttdeci">float ToFloat() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02920">ttmathbig.h:2920</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a72fb088166c205c7c7e6b85d3f8773de"><div class="ttname"><a href="classttmath_1_1_big.html#a72fb088166c205c7c7e6b85d3f8773de">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const std::wstring &amp;string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05393">ttmathbig.h:5393</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a033eede8a51437c3d595ef7cab8aac32"><div class="ttname"><a href="classttmath_1_1_big.html#a033eede8a51437c3d595ef7cab8aac32">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(uint &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02381">ttmathbig.h:2381</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a58f72e5345f932653619cc463f814bbb"><div class="ttname"><a href="classttmath_1_1_big.html#a58f72e5345f932653619cc463f814bbb">ttmath::Big::Big</a></div><div class="ttdeci">Big(const wchar_t *string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05364">ttmathbig.h:5364</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aefbb46b40a69874b432f7aec43f8d805"><div class="ttname"><a href="classttmath_1_1_big.html#aefbb46b40a69874b432f7aec43f8d805">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const wchar_t *source, uint base=10, const wchar_t **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l04990">ttmathbig.h:4990</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a9114adb3f73a64079005a5deaaf08d8f"><div class="ttname"><a href="classttmath_1_1_int.html#a9114adb3f73a64079005a5deaaf08d8f">ttmath::Int::FromInt</a></div><div class="ttdeci">uint FromInt(const Int&lt; argument_size &gt; &amp;p)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00697">ttmathint.h:697</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acaf20ea76a22aa1717976fc5c415994b"><div class="ttname"><a href="classttmath_1_1_big.html#acaf20ea76a22aa1717976fc5c415994b">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const char *source, uint base=10, const char **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l04949">ttmathbig.h:4949</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a3486d67def6959bd98ee590649c4d1c1"><div class="ttname"><a href="classttmath_1_1_big.html#a3486d67def6959bd98ee590649c4d1c1">ttmath::Big::SetSign</a></div><div class="ttdeci">void SetSign()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00726">ttmathbig.h:726</a></div></div>
<div class="ttc" id="classttmath_1_1_misc_html_a93a49aa7775f27e51feccc665c537277"><div class="ttname"><a href="classttmath_1_1_misc.html#a93a49aa7775f27e51feccc665c537277">ttmath::Misc::DigitToChar</a></div><div class="ttdeci">static uint DigitToChar(uint digit)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathmisc_8h_source.html#l00236">ttmathmisc.h:236</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a208511aaeacc80803434f80669fde9a9"><div class="ttname"><a href="classttmath_1_1_big.html#a208511aaeacc80803434f80669fde9a9">ttmath::Big::ToUInt</a></div><div class="ttdeci">uint ToUInt(uint &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02351">ttmathbig.h:2351</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a4a63cbcb29c8afc0aa17dcf160b5c500"><div class="ttname"><a href="classttmath_1_1_big.html#a4a63cbcb29c8afc0aa17dcf160b5c500">ttmath::Big::Big</a></div><div class="ttdeci">Big(double value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03180">ttmathbig.h:3180</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a62de1450c61299cdbbda5632b85386c8"><div class="ttname"><a href="classttmath_1_1_u_int.html#a62de1450c61299cdbbda5632b85386c8">ttmath::UInt::Sub</a></div><div class="ttdeci">uint Sub(const UInt&lt; value_size &gt; &amp;ss2, uint c=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint__x86__64_8h_source.html#l00460">ttmathuint_x86_64.h:460</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a04e13b29e821c17842c19e6fa8339037"><div class="ttname"><a href="classttmath_1_1_big.html#a04e13b29e821c17842c19e6fa8339037">ttmath::Big::Pow</a></div><div class="ttdeci">uint Pow(UInt&lt; pow_size &gt; pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01584">ttmathbig.h:1584</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a65b27dabbb8cefab74c1c31c6610a2b6"><div class="ttname"><a href="classttmath_1_1_u_int.html#a65b27dabbb8cefab74c1c31c6610a2b6">ttmath::UInt::IsTheLowestBitSet</a></div><div class="ttdeci">bool IsTheLowestBitSet() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l02556">ttmathuint.h:2556</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_af69f4f1a71948175abc653a82a728665"><div class="ttname"><a href="classttmath_1_1_u_int.html#af69f4f1a71948175abc653a82a728665">ttmath::UInt::Add</a></div><div class="ttdeci">uint Add(const UInt&lt; value_size &gt; &amp;ss2, uint c=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint__x86__64_8h_source.html#l00158">ttmathuint_x86_64.h:158</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ae6addbbd86cd8b9ed60d0afc8c80181c"><div class="ttname"><a href="classttmath_1_1_big.html#ae6addbbd86cd8b9ed60d0afc8c80181c">ttmath::Big::Ln</a></div><div class="ttdeci">uint Ln(const Big&lt; exp, man &gt; &amp;x)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02144">ttmathbig.h:2144</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a9b37f06bfa5793ecbfe889e7ad7931b2"><div class="ttname"><a href="classttmath_1_1_big.html#a9b37f06bfa5793ecbfe889e7ad7931b2">ttmath::Big::ClearInfoBit</a></div><div class="ttdeci">void ClearInfoBit(unsigned char bit)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00224">ttmathbig.h:224</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa42b85559280aa8565268423b95a5f0a"><div class="ttname"><a href="classttmath_1_1_big.html#aa42b85559280aa8565268423b95a5f0a">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const wchar_t *string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05382">ttmathbig.h:5382</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acae9e6888929068aecc5cca01126d3c5"><div class="ttname"><a href="classttmath_1_1_big.html#acae9e6888929068aecc5cca01126d3c5">ttmath::Big::FromUInt</a></div><div class="ttdeci">uint FromUInt(uint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02538">ttmathbig.h:2538</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_afb973e2f20e7ce89b161df73c6bea8aa"><div class="ttname"><a href="classttmath_1_1_big.html#afb973e2f20e7ce89b161df73c6bea8aa">ttmath::Big::Big</a></div><div class="ttdeci">Big(const Big&lt; exp, man &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03699">ttmathbig.h:3699</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_aeb74289f960343a11bf25a9b510fd99d"><div class="ttname"><a href="classttmath_1_1_int.html#aeb74289f960343a11bf25a9b510fd99d">ttmath::Int::Abs</a></div><div class="ttdeci">uint Abs()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00168">ttmathint.h:168</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_abdd4b5bd37f010f2c3dc6e770827693d"><div class="ttname"><a href="classttmath_1_1_big.html#abdd4b5bd37f010f2c3dc6e770827693d">ttmath::Big::Mod</a></div><div class="ttdeci">uint Mod(const Big&lt; exp, man &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01539">ttmathbig.h:1539</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a568b91071e386e75dffb0aebdf1c47ec"><div class="ttname"><a href="classttmath_1_1_big.html#a568b91071e386e75dffb0aebdf1c47ec">ttmath::Big::SetNan</a></div><div class="ttdeci">void SetNan()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00296">ttmathbig.h:296</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_adce4f7a208708d70114fc49091f389c6"><div class="ttname"><a href="classttmath_1_1_u_int.html#adce4f7a208708d70114fc49091f389c6">ttmath::UInt::LibType</a></div><div class="ttdeci">static LibTypeCode LibType()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint__x86__64_8h_source.html#l00126">ttmathuint_x86_64.h:126</a></div></div>
<div class="ttc" id="ttmathbig_8h_html_a6219093f504910a0e8415844157c70fc"><div class="ttname"><a href="ttmathbig_8h.html#a6219093f504910a0e8415844157c70fc">TTMATH_BIG_NAN</a></div><div class="ttdeci">#define TTMATH_BIG_NAN</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00104">ttmathbig.h:104</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a2421734423858544d65515584fa4683c"><div class="ttname"><a href="classttmath_1_1_u_int.html#a2421734423858544d65515584fa4683c">ttmath::UInt::IsTheHighestBitSet</a></div><div class="ttdeci">bool IsTheHighestBitSet() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l02547">ttmathuint.h:2547</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5243a9f27365aa90ef3504fd9e52e476"><div class="ttname"><a href="classttmath_1_1_big.html#a5243a9f27365aa90ef3504fd9e52e476">ttmath::Big::SetOne</a></div><div class="ttdeci">void SetOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00271">ttmathbig.h:271</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5143613c33850b40170b9d5b5c08c5f3"><div class="ttname"><a href="classttmath_1_1_big.html#a5143613c33850b40170b9d5b5c08c5f3">ttmath::Big::Pow</a></div><div class="ttdeci">uint Pow(const Big&lt; exp, man &gt; &amp;pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01797">ttmathbig.h:1797</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_ac655c4d3a5ec23052292ccf3a058a6f1"><div class="ttname"><a href="classttmath_1_1_u_int.html#ac655c4d3a5ec23052292ccf3a058a6f1">ttmath::UInt::MulBig</a></div><div class="ttdeci">void MulBig(const UInt&lt; value_size &gt; &amp;ss2, UInt&lt; value_size *2 &gt; &amp;result, uint algorithm=100)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00951">ttmathuint.h:951</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac33449ca94ff43cb02dde88ab6f3a18a"><div class="ttname"><a href="classttmath_1_1_big.html#ac33449ca94ff43cb02dde88ab6f3a18a">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const std::string &amp;string, const Conv &amp;conv, const char **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l04979">ttmathbig.h:4979</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a03bb399fd1b41237284e78689b861ff2"><div class="ttname"><a href="classttmath_1_1_big.html#a03bb399fd1b41237284e78689b861ff2">ttmath::Big::Big</a></div><div class="ttdeci">Big(signed int value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03492">ttmathbig.h:3492</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a9e3548dd8473d8dc8bf2fa03b13059e2"><div class="ttname"><a href="classttmath_1_1_big.html#a9e3548dd8473d8dc8bf2fa03b13059e2">ttmath::Big::Abs</a></div><div class="ttdeci">void Abs()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00682">ttmathbig.h:682</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a448d79907dbc27e897d0f6c55ecde0b4"><div class="ttname"><a href="classttmath_1_1_big.html#a448d79907dbc27e897d0f6c55ecde0b4">ttmath::Big::FromFloat</a></div><div class="ttdeci">uint FromFloat(float value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02833">ttmathbig.h:2833</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a7fdeb0ac1b5fdd397f03fcfc9080488d"><div class="ttname"><a href="classttmath_1_1_u_int.html#a7fdeb0ac1b5fdd397f03fcfc9080488d">ttmath::UInt::SetMax</a></div><div class="ttdeci">void SetMax()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00215">ttmathuint.h:215</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ab832ccd3ae1bceb85699542f441fa6ba"><div class="ttname"><a href="classttmath_1_1_big.html#ab832ccd3ae1bceb85699542f441fa6ba">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(Int&lt; int_size &gt; &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02516">ttmathbig.h:2516</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac641d85a2570d13d2520a88ba62d8f6e"><div class="ttname"><a href="classttmath_1_1_big.html#ac641d85a2570d13d2520a88ba62d8f6e">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(unsigned int value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03458">ttmathbig.h:3458</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_afd218703bd13ea24e9fe09398d826247"><div class="ttname"><a href="classttmath_1_1_big.html#afd218703bd13ea24e9fe09398d826247">ttmath::Big::FromDouble</a></div><div class="ttdeci">uint FromDouble(double value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02736">ttmathbig.h:2736</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a2c2c7de54743b12c05f1bfea7b153eba"><div class="ttname"><a href="classttmath_1_1_big.html#a2c2c7de54743b12c05f1bfea7b153eba">ttmath::Big::Exp</a></div><div class="ttdeci">uint Exp(const Big&lt; exp, man &gt; &amp;x)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01966">ttmathbig.h:1966</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_abdf555b866fd8a2e9bcadde81e253053"><div class="ttname"><a href="classttmath_1_1_int.html#abdf555b866fd8a2e9bcadde81e253053">ttmath::Int::AddOne</a></div><div class="ttdeci">uint AddOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00327">ttmathint.h:327</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a2287eb7f44b7483d93ffb32e490d4987"><div class="ttname"><a href="classttmath_1_1_big.html#a2287eb7f44b7483d93ffb32e490d4987">ttmath::Big::MulInt</a></div><div class="ttdeci">uint MulInt(sint ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01233">ttmathbig.h:1233</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a2bf2c98f26adfd1386597f2b9f195d02"><div class="ttname"><a href="classttmath_1_1_big.html#a2bf2c98f26adfd1386597f2b9f195d02">ttmath::Big::ToInt</a></div><div class="ttdeci">sint ToInt() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02366">ttmathbig.h:2366</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ab60bb059c684494fd91bb9d257ebd9c6"><div class="ttname"><a href="classttmath_1_1_big.html#ab60bb059c684494fd91bb9d257ebd9c6">ttmath::Big::Mod2</a></div><div class="ttdeci">uint Mod2() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01559">ttmathbig.h:1559</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a6a2dbb9846bbebd87393f2ea8f75911d"><div class="ttname"><a href="classttmath_1_1_big.html#a6a2dbb9846bbebd87393f2ea8f75911d">ttmath::Big::Sqrt</a></div><div class="ttdeci">uint Sqrt()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01835">ttmathbig.h:1835</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_a0ccaf279c13b1d747ef8c4690d84b5dd"><div class="ttname"><a href="ttmathtypes_8h.html#a0ccaf279c13b1d747ef8c4690d84b5dd">TTMATH_UINT_HIGHEST_BIT</a></div><div class="ttdeci">#define TTMATH_UINT_HIGHEST_BIT</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00258">ttmathtypes.h:258</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a25b9b67e9002f60d70d729f896279e36"><div class="ttname"><a href="classttmath_1_1_big.html#a25b9b67e9002f60d70d729f896279e36">ttmath::Big::SetE</a></div><div class="ttdeci">void SetE()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00433">ttmathbig.h:433</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acd54dedacff08e88e214eaf37cef7bd7"><div class="ttname"><a href="classttmath_1_1_big.html#acd54dedacff08e88e214eaf37cef7bd7">ttmath::Big::Pow</a></div><div class="ttdeci">uint Pow(Int&lt; pow_size &gt; pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01636">ttmathbig.h:1636</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a47b57350163b4dc79e480995fc044ad7"><div class="ttname"><a href="classttmath_1_1_u_int.html#a47b57350163b4dc79e480995fc044ad7">ttmath::UInt::MulInt</a></div><div class="ttdeci">uint MulInt(uint ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00835">ttmathuint.h:835</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_a9398de71bf574351ca952566d2f6f602"><div class="ttname"><a href="structttmath_1_1_conv.html#a9398de71bf574351ca952566d2f6f602">ttmath::Conv::base</a></div><div class="ttdeci">uint base</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00413">ttmathtypes.h:413</a></div></div>
<div class="ttc" id="ttmathbig_8h_html_a158d25d5cc270e04a7b5cbdb928b74f0"><div class="ttname"><a href="ttmathbig_8h.html#a158d25d5cc270e04a7b5cbdb928b74f0">TTMATH_BIG_ZERO</a></div><div class="ttdeci">#define TTMATH_BIG_ZERO</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00113">ttmathbig.h:113</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_adddcbcf842625d2c59bd072cc8931d6f"><div class="ttname"><a href="classttmath_1_1_big.html#adddcbcf842625d2c59bd072cc8931d6f">ttmath::Big::PowUInt</a></div><div class="ttdeci">uint PowUInt(Big&lt; exp, man &gt; pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01675">ttmathbig.h:1675</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a77d542e9f74a0bb8b93847a92c024c47"><div class="ttname"><a href="classttmath_1_1_big.html#a77d542e9f74a0bb8b93847a92c024c47">ttmath::Big::Mul</a></div><div class="ttdeci">uint Mul(const Big&lt; exp, man &gt; &amp;ss2, bool round=true)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01373">ttmathbig.h:1373</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ae050abccee92058b55a9a890350eb23d"><div class="ttname"><a href="classttmath_1_1_big.html#ae050abccee92058b55a9a890350eb23d">ttmath::Big::BitOr</a></div><div class="ttdeci">uint BitOr(Big&lt; exp, man &gt; ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01063">ttmathbig.h:1063</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_af74a3fa21ce1e4a4fb308a34340fb5b0"><div class="ttname"><a href="classttmath_1_1_big.html#af74a3fa21ce1e4a4fb308a34340fb5b0">ttmath::Big::EqualWithoutSign</a></div><div class="ttdeci">bool EqualWithoutSign(const Big&lt; exp, man &gt; &amp;ss2) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05491">ttmathbig.h:5491</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a5969b824a40d631c318dd027755028fd"><div class="ttname"><a href="classttmath_1_1_int.html#a5969b824a40d631c318dd027755028fd">ttmath::Int::SetMax</a></div><div class="ttdeci">void SetMax()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00071">ttmathint.h:71</a></div></div>
<div class="ttc" id="classttmath_1_1_misc_html_a77a225d405c1f54c28dfca566c486232"><div class="ttname"><a href="classttmath_1_1_misc.html#a77a225d405c1f54c28dfca566c486232">ttmath::Misc::AssignString</a></div><div class="ttdeci">static void AssignString(std::string &amp;result, const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathmisc_8h_source.html#l00072">ttmathmisc.h:72</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aaf5468225cd5060bf2e3a31532933a72"><div class="ttname"><a href="classttmath_1_1_big.html#aaf5468225cd5060bf2e3a31532933a72">ttmath::Big::operator-</a></div><div class="ttdeci">Big&lt; exp, man &gt; operator-() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05608">ttmathbig.h:5608</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a607da160d527c93bdecfc96ff4d4f2df"><div class="ttname"><a href="classttmath_1_1_big.html#a607da160d527c93bdecfc96ff4d4f2df">ttmath::Big::ToWString</a></div><div class="ttdeci">std::wstring ToWString(uint base=10) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03828">ttmathbig.h:3828</a></div></div>
<div class="ttc" id="namespacettmath_html"><div class="ttname"><a href="namespacettmath.html">ttmath</a></div><div class="ttdoc">a namespace for the TTMath library</div><div class="ttdef"><b>Definition:</b> <a href="ttmath_8h_source.html#l00062">ttmath.h:62</a></div></div>
<div class="ttc" id="namespacettmath_html_a5c3bd12cd3d050852a60e022e5e12799"><div class="ttname"><a href="namespacettmath.html#a5c3bd12cd3d050852a60e022e5e12799">ttmath::LibTypeCode</a></div><div class="ttdeci">LibTypeCode</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00356">ttmathtypes.h:356</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5ab986f32abce29ad9183833430e6723"><div class="ttname"><a href="classttmath_1_1_big.html#a5ab986f32abce29ad9183833430e6723">ttmath::Big::ChangeSign</a></div><div class="ttdeci">void ChangeSign()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00740">ttmathbig.h:740</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a57fa951410244551c3449910fe129d64"><div class="ttname"><a href="classttmath_1_1_big.html#a57fa951410244551c3449910fe129d64">ttmath::Big::Div</a></div><div class="ttdeci">uint Div(const Big&lt; exp, man &gt; &amp;ss2, bool round=true)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01470">ttmathbig.h:1470</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_ab2086439211b3fbc02eb998b328483ea"><div class="ttname"><a href="classttmath_1_1_u_int.html#ab2086439211b3fbc02eb998b328483ea">ttmath::UInt::SetZero</a></div><div class="ttdeci">void SetZero()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00188">ttmathuint.h:188</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a3aa7b73969b57a1d50081fedf184c222"><div class="ttname"><a href="classttmath_1_1_big.html#a3aa7b73969b57a1d50081fedf184c222">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const std::string &amp;string, uint base=10, const char **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l04970">ttmathbig.h:4970</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ad0996b6cc3bd87251ec2d946c7ec606a"><div class="ttname"><a href="classttmath_1_1_big.html#ad0996b6cc3bd87251ec2d946c7ec606a">ttmath::Big::ToUInt</a></div><div class="ttdeci">uint ToUInt(UInt&lt; int_size &gt; &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02484">ttmathbig.h:2484</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a48792b7753dc6e5d690bf8a578463bdf"><div class="ttname"><a href="classttmath_1_1_big.html#a48792b7753dc6e5d690bf8a578463bdf">ttmath::Big::ToInt</a></div><div class="ttdeci">uint ToInt(unsigned int &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03399">ttmathbig.h:3399</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a00cdfa94cc491487709a3f1356fd0a14"><div class="ttname"><a href="classttmath_1_1_big.html#a00cdfa94cc491487709a3f1356fd0a14">ttmath::Big::IsZero</a></div><div class="ttdeci">bool IsZero() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00648">ttmathbig.h:648</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a9b1c08752b17d93cf5a11493177869bf"><div class="ttname"><a href="classttmath_1_1_big.html#a9b1c08752b17d93cf5a11493177869bf">ttmath::Big::Big</a></div><div class="ttdeci">Big(const std::wstring &amp;string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05373">ttmathbig.h:5373</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a961c89a45552dfac6d4a47e6e6d21106"><div class="ttname"><a href="classttmath_1_1_big.html#a961c89a45552dfac6d4a47e6e6d21106">ttmath::Big::FromBig</a></div><div class="ttdeci">uint FromBig(const Big&lt; another_exp, another_man &gt; &amp;another)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02240">ttmathbig.h:2240</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a66ed2921ae082f9694afb330ec67d05d"><div class="ttname"><a href="classttmath_1_1_u_int.html#a66ed2921ae082f9694afb330ec67d05d">ttmath::UInt::Div</a></div><div class="ttdeci">uint Div(const UInt&lt; value_size &gt; &amp;divisor, UInt&lt; value_size &gt; *remainder=0, uint algorithm=3)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l01626">ttmathuint.h:1626</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_a3af4b841f70a529a150c820780e1eb40"><div class="ttname"><a href="ttmathtypes_8h.html#a3af4b841f70a529a150c820780e1eb40">TTMATH_UINT_MAX_VALUE</a></div><div class="ttdeci">#define TTMATH_UINT_MAX_VALUE</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00264">ttmathtypes.h:264</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a960b3d4052c7b8f8c3a504fe6671b193"><div class="ttname"><a href="classttmath_1_1_big.html#a960b3d4052c7b8f8c3a504fe6671b193">ttmath::Big::Big</a></div><div class="ttdeci">Big(uint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03171">ttmathbig.h:3171</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a3f305dc39575008dc2ad1f094cdccacc"><div class="ttname"><a href="classttmath_1_1_u_int.html#a3f305dc39575008dc2ad1f094cdccacc">ttmath::UInt::BitAnd</a></div><div class="ttdeci">void BitAnd(const UInt&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00743">ttmathuint.h:743</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa2709ec35d8cd0e39e1c72a834f2ee3c"><div class="ttname"><a href="classttmath_1_1_big.html#aa2709ec35d8cd0e39e1c72a834f2ee3c">ttmath::Big::IsInteger</a></div><div class="ttdeci">bool IsInteger() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05883">ttmathbig.h:5883</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a9e15cbcd6ebc80d00887fea7396c77d5"><div class="ttname"><a href="classttmath_1_1_big.html#a9e15cbcd6ebc80d00887fea7396c77d5">ttmath::Big::operator &amp;</a></div><div class="ttdeci">Big&lt; exp, man &gt; operator &amp;(const Big&lt; exp, man &gt; &amp;p2) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05739">ttmathbig.h:5739</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_a0a7022271658d24d9da02c1f01be16bc"><div class="ttname"><a href="ttmathtypes_8h.html#a0a7022271658d24d9da02c1f01be16bc">TTMATH_BUILTIN_VARIABLES_SIZE</a></div><div class="ttdeci">#define TTMATH_BUILTIN_VARIABLES_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00271">ttmathtypes.h:271</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_abc832a11bd8421f42ee93c29b52f04b9"><div class="ttname"><a href="classttmath_1_1_big.html#abc832a11bd8421f42ee93c29b52f04b9">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(signed int value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03480">ttmathbig.h:3480</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ae6d2562c5a95d6e366bf5ef16f78ffc1"><div class="ttname"><a href="classttmath_1_1_big.html#ae6d2562c5a95d6e366bf5ef16f78ffc1">ttmath::Big::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;s, const Big&lt; exp, man &gt; &amp;l)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05989">ttmathbig.h:5989</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a0f395f84b208f36a215d8b5f53400b42"><div class="ttname"><a href="classttmath_1_1_u_int.html#a0f395f84b208f36a215d8b5f53400b42">ttmath::UInt::Rcr</a></div><div class="ttdeci">uint Rcr(uint bits, uint c=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00555">ttmathuint.h:555</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a3008dfb310b1580c45116f8c1d9ea6d9"><div class="ttname"><a href="classttmath_1_1_big.html#a3008dfb310b1580c45116f8c1d9ea6d9">ttmath::Big::ToDouble</a></div><div class="ttdeci">double ToDouble() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02848">ttmathbig.h:2848</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa8ccdb8b4d9851038d35b42dfe8d5dcf"><div class="ttname"><a href="classttmath_1_1_big.html#aa8ccdb8b4d9851038d35b42dfe8d5dcf">ttmath::Big::ToString</a></div><div class="ttdeci">std::string ToString(const Conv &amp;conv) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03750">ttmathbig.h:3750</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ab06fe23729905c90461b52be26104744"><div class="ttname"><a href="classttmath_1_1_big.html#ab06fe23729905c90461b52be26104744">ttmath::Big::Sub</a></div><div class="ttdeci">uint Sub(const Big&lt; exp, man &gt; &amp;ss2, bool round=true)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00986">ttmathbig.h:986</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5e052f495cf95abf16c322d72cf752bf"><div class="ttname"><a href="classttmath_1_1_big.html#a5e052f495cf95abf16c322d72cf752bf">ttmath::Big::Big</a></div><div class="ttdeci">Big(float value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03189">ttmathbig.h:3189</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_ab254e021f626e59b5e32e0b8e02ce9be"><div class="ttname"><a href="classttmath_1_1_u_int.html#ab254e021f626e59b5e32e0b8e02ce9be">ttmath::UInt::BitOr</a></div><div class="ttdeci">void BitOr(const UInt&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00755">ttmathuint.h:755</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a90668305264d2c305bb0642f353da519"><div class="ttname"><a href="classttmath_1_1_big.html#a90668305264d2c305bb0642f353da519">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(double value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03152">ttmathbig.h:3152</a></div></div>
<div class="ttc" id="ttmathint_8h_html"><div class="ttname"><a href="ttmathint_8h.html">ttmathint.h</a></div><div class="ttdoc">template class Int&lt;uint&gt;</div></div>
<div class="ttc" id="classttmath_1_1_int_html_af91fdc65105f7ceb071c2a8a98d0cbfb"><div class="ttname"><a href="classttmath_1_1_int.html#af91fdc65105f7ceb071c2a8a98d0cbfb">ttmath::Int::IsSign</a></div><div class="ttdeci">bool IsSign() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00156">ttmathint.h:156</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a01fd17a7bc3beda037834bb954460295"><div class="ttname"><a href="classttmath_1_1_big.html#a01fd17a7bc3beda037834bb954460295">ttmath::Big::Round</a></div><div class="ttdeci">uint Round()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05929">ttmathbig.h:5929</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a7575e10d9fff2f301a66bb05ab472111"><div class="ttname"><a href="classttmath_1_1_big.html#a7575e10d9fff2f301a66bb05ab472111">ttmath::Big::IsNan</a></div><div class="ttdeci">bool IsNan() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00667">ttmathbig.h:667</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_ab46339e71ac07f2c8717fcfb3e6f20e7"><div class="ttname"><a href="classttmath_1_1_int.html#ab46339e71ac07f2c8717fcfb3e6f20e7">ttmath::Int::SubOne</a></div><div class="ttdeci">uint SubOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00340">ttmathint.h:340</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a111c5f0706fdbb30d2c1c83340e9563d"><div class="ttname"><a href="classttmath_1_1_big.html#a111c5f0706fdbb30d2c1c83340e9563d">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const Int&lt; int_size &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03586">ttmathbig.h:3586</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_afa533455acaccdefe31e4ce4580a8f78"><div class="ttname"><a href="classttmath_1_1_big.html#afa533455acaccdefe31e4ce4580a8f78">ttmath::Big::Big</a></div><div class="ttdeci">Big(unsigned int value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03470">ttmathbig.h:3470</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a84070489fc71cd69d0e041f2b20d0616"><div class="ttname"><a href="classttmath_1_1_big.html#a84070489fc71cd69d0e041f2b20d0616">ttmath::Big::Big</a></div><div class="ttdeci">Big(const std::string &amp;string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05330">ttmathbig.h:5330</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a6e6d6c539858b95828c386306c638f47"><div class="ttname"><a href="classttmath_1_1_big.html#a6e6d6c539858b95828c386306c638f47">ttmath::Big::Big</a></div><div class="ttdeci">Big(const Big&lt; another_exp, another_man &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03642">ttmathbig.h:3642</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a34a2cf4362d6b66b0c3f00f94e4c3b4b"><div class="ttname"><a href="classttmath_1_1_int.html#a34a2cf4362d6b66b0c3f00f94e4c3b4b">ttmath::Int::Add</a></div><div class="ttdeci">uint Add(const Int&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00220">ttmathint.h:220</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a1988d656495b09a5d357cb42f080baf5"><div class="ttname"><a href="classttmath_1_1_int.html#a1988d656495b09a5d357cb42f080baf5">ttmath::Int::AddInt</a></div><div class="ttdeci">uint AddInt(uint value, uint index=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00237">ttmathint.h:237</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a1f87240330d286478cbb1a80f857bbaf"><div class="ttname"><a href="classttmath_1_1_big.html#a1f87240330d286478cbb1a80f857bbaf">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const UInt&lt; int_size &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03608">ttmathbig.h:3608</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_abb8fcf0f22ac6c88948be1ed7bde0c4d"><div class="ttname"><a href="classttmath_1_1_big.html#abb8fcf0f22ac6c88948be1ed7bde0c4d">ttmath::Big::LibTypeStr</a></div><div class="ttdeci">static const char * LibTypeStr()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00145">ttmathbig.h:145</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_aef936ab7a0d7f0c34a9a794b3072cf6a"><div class="ttname"><a href="ttmathtypes_8h.html#aef936ab7a0d7f0c34a9a794b3072cf6a">TTMATH_BITS_PER_UINT</a></div><div class="ttdeci">#define TTMATH_BITS_PER_UINT</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00253">ttmathtypes.h:253</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a1051668083a766216ca3dc218d7dbf23"><div class="ttname"><a href="classttmath_1_1_big.html#a1051668083a766216ca3dc218d7dbf23">ttmath::Big::FromUInt</a></div><div class="ttdeci">uint FromUInt(UInt&lt; int_size &gt; value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03538">ttmathbig.h:3538</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a1459d8f91899c87e26a59ccbf9ed3f00"><div class="ttname"><a href="classttmath_1_1_int.html#a1459d8f91899c87e26a59ccbf9ed3f00">ttmath::Int::ChangeSign</a></div><div class="ttdeci">uint ChangeSign()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00105">ttmathint.h:105</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a82d9a7e2147c21a09bd7480d5d046336"><div class="ttname"><a href="classttmath_1_1_u_int.html#a82d9a7e2147c21a09bd7480d5d046336">ttmath::UInt::BitXor</a></div><div class="ttdeci">void BitXor(const UInt&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00767">ttmathuint.h:767</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_abbd06a120afabc0e96daf310ed430e53"><div class="ttname"><a href="classttmath_1_1_big.html#abbd06a120afabc0e96daf310ed430e53">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const char *string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05339">ttmathbig.h:5339</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_adef5243a8390314fb21339145e3a154c"><div class="ttname"><a href="classttmath_1_1_u_int.html#adef5243a8390314fb21339145e3a154c">ttmath::UInt::CompensationToLeft</a></div><div class="ttdeci">uint CompensationToLeft()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00598">ttmathuint.h:598</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac3a17607588c394ee7fa674e83f0d54a"><div class="ttname"><a href="classttmath_1_1_big.html#ac3a17607588c394ee7fa674e83f0d54a">ttmath::Big::IsInfoBit</a></div><div class="ttdeci">bool IsInfoBit(unsigned char bit) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00247">ttmathbig.h:247</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html"><div class="ttname"><a href="classttmath_1_1_u_int.html">ttmath::UInt&lt; man &gt;</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a77ac7df77125a3d5a66a50ce3d44eb83"><div class="ttname"><a href="classttmath_1_1_big.html#a77ac7df77125a3d5a66a50ce3d44eb83">ttmath::Big::Big</a></div><div class="ttdeci">Big(const char *string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05321">ttmathbig.h:5321</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a591311e9b21e4c6dc5ae8e6140e1a7f6"><div class="ttname"><a href="classttmath_1_1_big.html#a591311e9b21e4c6dc5ae8e6140e1a7f6">ttmath::Big::SmallerWithoutSignThan</a></div><div class="ttdeci">bool SmallerWithoutSignThan(const Big&lt; exp, man &gt; &amp;ss2) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05419">ttmathbig.h:5419</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a619f1155c5a5919eb2be4effee15c851"><div class="ttname"><a href="classttmath_1_1_big.html#a619f1155c5a5919eb2be4effee15c851">ttmath::Big::FromInt</a></div><div class="ttdeci">uint FromInt(const UInt&lt; int_size &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03551">ttmathbig.h:3551</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_af73a550fc9a5e8fbfb93e44d3d5a0f61"><div class="ttname"><a href="classttmath_1_1_big.html#af73a550fc9a5e8fbfb93e44d3d5a0f61">ttmath::Big::ToWString</a></div><div class="ttdeci">std::wstring ToWString(const Conv &amp;conv) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03815">ttmathbig.h:3815</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5036639819aa811aa9dba41c9fdd7654"><div class="ttname"><a href="classttmath_1_1_big.html#a5036639819aa811aa9dba41c9fdd7654">ttmath::Big::Big</a></div><div class="ttdeci">Big(sint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03163">ttmathbig.h:3163</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_a47f657fa1b7ff6c82cd82449207b55d2"><div class="ttname"><a href="structttmath_1_1_conv.html#a47f657fa1b7ff6c82cd82449207b55d2">ttmath::Conv::comma</a></div><div class="ttdeci">uint comma</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00477">ttmathtypes.h:477</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a46a0a5b484d4cdb01d8c8f488037135b"><div class="ttname"><a href="classttmath_1_1_big.html#a46a0a5b484d4cdb01d8c8f488037135b">ttmath::Big::ToString</a></div><div class="ttdeci">uint ToString(std::string &amp;result, const Conv &amp;conv) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03740">ttmathbig.h:3740</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a90e579e35cb45cbe5c49d03cd5e531ef"><div class="ttname"><a href="classttmath_1_1_big.html#a90e579e35cb45cbe5c49d03cd5e531ef">ttmath::Big::Set2Pi</a></div><div class="ttdeci">void Set2Pi()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00419">ttmathbig.h:419</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a047a2c4143d827b2e5820d0609639525"><div class="ttname"><a href="classttmath_1_1_big.html#a047a2c4143d827b2e5820d0609639525">ttmath::Big::ToDouble</a></div><div class="ttdeci">uint ToDouble(double &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02979">ttmathbig.h:2979</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa7791262bfc4007520edeb1e68624e9a"><div class="ttname"><a href="classttmath_1_1_big.html#aa7791262bfc4007520edeb1e68624e9a">ttmath::Big::SetPi</a></div><div class="ttdeci">void SetPi()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00393">ttmathbig.h:393</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac5ec17e2b08ec58b77bd1d41bd5cf8d2"><div class="ttname"><a href="classttmath_1_1_big.html#ac5ec17e2b08ec58b77bd1d41bd5cf8d2">ttmath::Big::Big</a></div><div class="ttdeci">Big(const Int&lt; int_size &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03598">ttmathbig.h:3598</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a99f65f7af34a5974793b01836c70cca3"><div class="ttname"><a href="classttmath_1_1_big.html#a99f65f7af34a5974793b01836c70cca3">ttmath::Big::ToString</a></div><div class="ttdeci">uint ToString(std::wstring &amp;result, const Conv &amp;conv) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03805">ttmathbig.h:3805</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a1e9f5ae0f964d6492b6201d8c8b9e445"><div class="ttname"><a href="classttmath_1_1_big.html#a1e9f5ae0f964d6492b6201d8c8b9e445">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const Big&lt; exp, man &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03685">ttmathbig.h:3685</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a52ea0acdfd8b1ea83073d18aec855a0e"><div class="ttname"><a href="classttmath_1_1_big.html#a52ea0acdfd8b1ea83073d18aec855a0e">ttmath::Big::PowInt</a></div><div class="ttdeci">uint PowInt(const Big&lt; exp, man &gt; &amp;pow)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01731">ttmathbig.h:1731</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa650c1d2064f7449e1c1cbefbd6d753e"><div class="ttname"><a href="classttmath_1_1_big.html#aa650c1d2064f7449e1c1cbefbd6d753e">ttmath::Big::ToString</a></div><div class="ttdeci">uint ToString(std::wstring &amp;result, uint base=10, bool scient=false, sint scient_from=15, sint round=-1, bool trim_zeroes=true, wchar_t comma='.') const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03780">ttmathbig.h:3780</a></div></div>
<div class="ttc" id="ttmathbig_8h_html_a9222f49a8d16599b8b7c77c149796649"><div class="ttname"><a href="ttmathbig_8h.html#a9222f49a8d16599b8b7c77c149796649">TTMATH_BIG_SIGN</a></div><div class="ttdeci">#define TTMATH_BIG_SIGN</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00097">ttmathbig.h:97</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ae851f864ffab7964931e6b0f7632a377"><div class="ttname"><a href="classttmath_1_1_big.html#ae851f864ffab7964931e6b0f7632a377">ttmath::Big::SetInfoBit</a></div><div class="ttdeci">void SetInfoBit(unsigned char bit)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00236">ttmathbig.h:236</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a26c0188d1e97b54804c1c87706722dd8"><div class="ttname"><a href="classttmath_1_1_big.html#a26c0188d1e97b54804c1c87706722dd8">ttmath::Big::ToUInt</a></div><div class="ttdeci">uint ToUInt(unsigned int &amp;result) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03380">ttmathbig.h:3380</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ad936f1c064b22965cabc9b818ade48a9"><div class="ttname"><a href="classttmath_1_1_big.html#ad936f1c064b22965cabc9b818ade48a9">ttmath::Big::Sgn</a></div><div class="ttdeci">void Sgn()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00696">ttmathbig.h:696</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a24763be7072f23d6d057de265516f551"><div class="ttname"><a href="classttmath_1_1_big.html#a24763be7072f23d6d057de265516f551">ttmath::Big::~Big</a></div><div class="ttdeci">~Big()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03677">ttmathbig.h:3677</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a50c6e79d63ff6ee2a72a27f0e98121c4"><div class="ttname"><a href="classttmath_1_1_big.html#a50c6e79d63ff6ee2a72a27f0e98121c4">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(const std::string &amp;string)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05350">ttmathbig.h:5350</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a7d291abddb1d43ca4784ba152cdd6d25"><div class="ttname"><a href="classttmath_1_1_big.html#a7d291abddb1d43ca4784ba152cdd6d25">ttmath::Big::BitXor</a></div><div class="ttdeci">uint BitXor(Big&lt; exp, man &gt; ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01123">ttmathbig.h:1123</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a6d81ced6d4f5183287a316a9d45d3198"><div class="ttname"><a href="classttmath_1_1_int.html#a6d81ced6d4f5183287a316a9d45d3198">ttmath::Int::DivInt</a></div><div class="ttdeci">uint DivInt(sint ss2, sint *remainder=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00524">ttmathint.h:524</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a97f04b97ae04cf39464b9f0bb0bd3a81"><div class="ttname"><a href="classttmath_1_1_big.html#a97f04b97ae04cf39464b9f0bb0bd3a81">ttmath::Big::operator&lt;&lt;</a></div><div class="ttdeci">friend std::wostream &amp; operator&lt;&lt;(std::wostream &amp;s, const Big&lt; exp, man &gt; &amp;l)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l06000">ttmathbig.h:6000</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a2bc659d2f8aa94cf17ee5650d06119f2"><div class="ttname"><a href="classttmath_1_1_int.html#a2bc659d2f8aa94cf17ee5650d06119f2">ttmath::Int::Div</a></div><div class="ttdeci">uint Div(Int&lt; value_size &gt; ss2, Int&lt; value_size &gt; *remainder=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00480">ttmathint.h:480</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aa6cfe4e52a7a85a71e14b7226814eb46"><div class="ttname"><a href="classttmath_1_1_big.html#aa6cfe4e52a7a85a71e14b7226814eb46">ttmath::Big::Big</a></div><div class="ttdeci">Big(const UInt&lt; int_size &gt; &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03620">ttmathbig.h:3620</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ad2ffa272f4b4f3297168c7c488991cd3"><div class="ttname"><a href="classttmath_1_1_big.html#ad2ffa272f4b4f3297168c7c488991cd3">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const std::wstring &amp;string, const Conv &amp;conv, const wchar_t **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05020">ttmathbig.h:5020</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_af8cc709585199e6f5b48e9b4e058b043"><div class="ttname"><a href="classttmath_1_1_big.html#af8cc709585199e6f5b48e9b4e058b043">ttmath::Big::Add</a></div><div class="ttdeci">uint Add(Big&lt; exp, man &gt; ss2, bool round=true, bool adding=true)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00930">ttmathbig.h:930</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac26abc00889171efdd2afa61454567c9"><div class="ttname"><a href="classttmath_1_1_big.html#ac26abc00889171efdd2afa61454567c9">ttmath::Big::operator++</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator++()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05692">ttmathbig.h:5692</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a60e97560d5f03d2321130a33fd24c74c"><div class="ttname"><a href="classttmath_1_1_u_int.html#a60e97560d5f03d2321130a33fd24c74c">ttmath::UInt::ClearFirstBits</a></div><div class="ttdeci">void ClearFirstBits(uint n)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l02508">ttmathuint.h:2508</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ae2818bdfc2f236628a17c9585c594ca4"><div class="ttname"><a href="classttmath_1_1_big.html#ae2818bdfc2f236628a17c9585c594ca4">ttmath::Big::operator=</a></div><div class="ttdeci">Big&lt; exp, man &gt; &amp; operator=(sint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l03119">ttmathbig.h:3119</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a096173e99072ed2ef2dc52071c6b4b7a"><div class="ttname"><a href="classttmath_1_1_big.html#a096173e99072ed2ef2dc52071c6b4b7a">ttmath::Big::MulUInt</a></div><div class="ttdeci">uint MulUInt(uint ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01179">ttmathbig.h:1179</a></div></div>
<div class="ttc" id="ttmaththreads_8h_html"><div class="ttname"><a href="ttmaththreads_8h.html">ttmaththreads.h</a></div><div class="ttdoc">Some objects used in multithreads environment.</div></div>
<div class="ttc" id="classttmath_1_1_big_html_a6ae448d3c59f28495d6951bd688ed485"><div class="ttname"><a href="classttmath_1_1_big.html#a6ae448d3c59f28495d6951bd688ed485">ttmath::Big::SkipFraction</a></div><div class="ttdeci">void SkipFraction()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05808">ttmathbig.h:5808</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_aaa62dbe97d8e2ceb434c5c3cac9cd0e1"><div class="ttname"><a href="classttmath_1_1_u_int.html#aaa62dbe97d8e2ceb434c5c3cac9cd0e1">ttmath::UInt::AddOne</a></div><div class="ttdeci">uint AddOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00386">ttmathuint.h:386</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_aa857e4036b8a726c70c51ff088080acb"><div class="ttname"><a href="classttmath_1_1_u_int.html#aa857e4036b8a726c70c51ff088080acb">ttmath::UInt::SetOne</a></div><div class="ttdeci">void SetOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00202">ttmathuint.h:202</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_ac7e4c950e2abeda28e58a35725d37ef7"><div class="ttname"><a href="classttmath_1_1_u_int.html#ac7e4c950e2abeda28e58a35725d37ef7">ttmath::UInt::IsZero</a></div><div class="ttdeci">bool IsZero() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l02605">ttmathuint.h:2605</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_afd2e1ded5ff360db5f2b6e1b98fb360f"><div class="ttname"><a href="classttmath_1_1_big.html#afd2e1ded5ff360db5f2b6e1b98fb360f">ttmath::Big::BitAnd</a></div><div class="ttdeci">uint BitAnd(Big&lt; exp, man &gt; ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l01002">ttmathbig.h:1002</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a9cee17c474838e4d58d55e4c8524fdb7"><div class="ttname"><a href="classttmath_1_1_u_int.html#a9cee17c474838e4d58d55e4c8524fdb7">ttmath::UInt::GetBit</a></div><div class="ttdeci">uint GetBit(uint bit_index) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00706">ttmathuint.h:706</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_aedc4abe8e1d984289b41830e9a1d67fb"><div class="ttname"><a href="classttmath_1_1_big.html#aedc4abe8e1d984289b41830e9a1d67fb">ttmath::Big::Standardizing</a></div><div class="ttdeci">uint Standardizing()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00173">ttmathbig.h:173</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a403da6805149cdfb8a69f39a15cdf505"><div class="ttname"><a href="classttmath_1_1_u_int.html#a403da6805149cdfb8a69f39a15cdf505">ttmath::UInt::ToUInt</a></div><div class="ttdeci">uint ToUInt() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l03103">ttmathuint.h:3103</a></div></div>
<div class="ttc" id="namespacettmath_html_a4b0a5dcba29a2c7a0abc8b4403a25ac4"><div class="ttname"><a href="namespacettmath.html#a4b0a5dcba29a2c7a0abc8b4403a25ac4">ttmath::sint</a></div><div class="ttdeci">int64_t sint</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00243">ttmathtypes.h:243</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac34df29b0b14bee8687eefc07b8698af"><div class="ttname"><a href="classttmath_1_1_big.html#ac34df29b0b14bee8687eefc07b8698af">ttmath::Big::SetLn2</a></div><div class="ttdeci">void SetLn2()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00490">ttmathbig.h:490</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a8b97269748f5897406ce4d8cecbca432"><div class="ttname"><a href="classttmath_1_1_big.html#a8b97269748f5897406ce4d8cecbca432">ttmath::Big::GreaterWithoutSignThan</a></div><div class="ttdeci">bool GreaterWithoutSignThan(const Big&lt; exp, man &gt; &amp;ss2) const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05453">ttmathbig.h:5453</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html"><div class="ttname"><a href="classttmath_1_1_big.html">ttmath::Big</a></div><div class="ttdoc">Big implements the floating point numbers.</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00063">ttmathbig.h:63</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a6a50f7bec2c05935c06bbe1dd43fa4ac"><div class="ttname"><a href="classttmath_1_1_big.html#a6a50f7bec2c05935c06bbe1dd43fa4ac">ttmath::Big::Log</a></div><div class="ttdeci">uint Log(const Big&lt; exp, man &gt; &amp;x, const Big&lt; exp, man &gt; &amp;base)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02189">ttmathbig.h:2189</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_a9d5f89116e1ea6c624978e7905823a80"><div class="ttname"><a href="classttmath_1_1_int.html#a9d5f89116e1ea6c624978e7905823a80">ttmath::Int::SubInt</a></div><div class="ttdeci">uint SubInt(uint value, uint index=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00314">ttmathint.h:314</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ac60dd6aef7757f1232477a89b41edae8"><div class="ttname"><a href="classttmath_1_1_big.html#ac60dd6aef7757f1232477a89b41edae8">ttmath::Big::operator++</a></div><div class="ttdeci">Big&lt; exp, man &gt; operator++(int)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l05703">ttmathbig.h:5703</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acbbb59d97c06e93138551fb160c399c0"><div class="ttname"><a href="classttmath_1_1_big.html#acbbb59d97c06e93138551fb160c399c0">ttmath::Big::Set05Pi</a></div><div class="ttdeci">void Set05Pi()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00406">ttmathbig.h:406</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a4a4d897f3a1cd7eea680884dbf327ba6"><div class="ttname"><a href="classttmath_1_1_big.html#a4a4d897f3a1cd7eea680884dbf327ba6">ttmath::Big::SetMax</a></div><div class="ttdeci">void SetMax()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00618">ttmathbig.h:618</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_a8091e5fbba450554994ba4babc115575"><div class="ttname"><a href="structttmath_1_1_conv.html#a8091e5fbba450554994ba4babc115575">ttmath::Conv::trim_zeroes</a></div><div class="ttdeci">bool trim_zeroes</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00470">ttmathtypes.h:470</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a5506d563b02f4c506aa04e313c79d62f"><div class="ttname"><a href="classttmath_1_1_big.html#a5506d563b02f4c506aa04e313c79d62f">ttmath::Big::FromString</a></div><div class="ttdeci">uint FromString(const char *source, const Conv &amp;conv, const char **after_source=0, bool *value_read=0)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l04961">ttmathbig.h:4961</a></div></div>
<div class="ttc" id="namespacettmath_html_a5c1fccc9761aaa3d2b6dd32c224f5dac"><div class="ttname"><a href="namespacettmath.html#a5c1fccc9761aaa3d2b6dd32c224f5dac">ttmath::uint</a></div><div class="ttdeci">uint64_t uint</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00238">ttmathtypes.h:238</a></div></div>
<div class="ttc" id="ttmathtypes_8h_html_aa3f5e440e9fef3a6267d24d881d00084"><div class="ttname"><a href="ttmathtypes_8h.html#aa3f5e440e9fef3a6267d24d881d00084">TTMATH_REFERENCE_ASSERT</a></div><div class="ttdeci">#define TTMATH_REFERENCE_ASSERT(expression)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00682">ttmathtypes.h:682</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a1b5980e7d66c1a6bcfe55d85eccb1821"><div class="ttname"><a href="classttmath_1_1_big.html#a1b5980e7d66c1a6bcfe55d85eccb1821">ttmath::Big::SetZero</a></div><div class="ttdeci">void SetZero()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00256">ttmathbig.h:256</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a56a6fff11059c5acd4e20cbb01f321c3"><div class="ttname"><a href="classttmath_1_1_big.html#a56a6fff11059c5acd4e20cbb01f321c3">ttmath::Big::FromInt</a></div><div class="ttdeci">uint FromInt(uint value)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l02564">ttmathbig.h:2564</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_a47f6a6820ea8447013d8e20ae5fa0545"><div class="ttname"><a href="classttmath_1_1_u_int.html#a47f6a6820ea8447013d8e20ae5fa0545">ttmath::UInt::Swap</a></div><div class="ttdeci">void Swap(UInt&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00239">ttmathuint.h:239</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_acb724c5ab24678fd24bc93189fef3973"><div class="ttname"><a href="classttmath_1_1_big.html#acb724c5ab24678fd24bc93189fef3973">ttmath::Big::SetMin</a></div><div class="ttdeci">void SetMin()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00632">ttmathbig.h:632</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a90c19948437cc5db98999d1d59a092ab"><div class="ttname"><a href="classttmath_1_1_big.html#a90c19948437cc5db98999d1d59a092ab">ttmath::Big::operator&gt;&gt;</a></div><div class="ttdeci">friend std::wistream &amp; operator&gt;&gt;(std::wistream &amp;s, Big&lt; exp, man &gt; &amp;l)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l06099">ttmathbig.h:6099</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_af8e3e13a842ecee73415e2c14818063f"><div class="ttname"><a href="classttmath_1_1_int.html#af8e3e13a842ecee73415e2c14818063f">ttmath::Int::Sub</a></div><div class="ttdeci">uint Sub(const Int&lt; value_size &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l00299">ttmathint.h:299</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_a86225c6b7812f9d9ed2a4009b3278222"><div class="ttname"><a href="classttmath_1_1_big.html#a86225c6b7812f9d9ed2a4009b3278222">ttmath::Big::Swap</a></div><div class="ttdeci">void Swap(Big&lt; exp, man &gt; &amp;ss2)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l00316">ttmathbig.h:316</a></div></div>
<div class="ttc" id="classttmath_1_1_big_html_ad522ab4137846a3a9447eb5d60cca97d"><div class="ttname"><a href="classttmath_1_1_big.html#ad522ab4137846a3a9447eb5d60cca97d">ttmath::Big::operator&gt;&gt;</a></div><div class="ttdeci">friend std::istream &amp; operator&gt;&gt;(std::istream &amp;s, Big&lt; exp, man &gt; &amp;l)</div><div class="ttdef"><b>Definition:</b> <a href="ttmathbig_8h_source.html#l06088">ttmathbig.h:6088</a></div></div>
<div class="ttc" id="classttmath_1_1_u_int_html_afd3f1dc2508a6625f0a5906779e58d00"><div class="ttname"><a href="classttmath_1_1_u_int.html#afd3f1dc2508a6625f0a5906779e58d00">ttmath::UInt::SubOne</a></div><div class="ttdeci">uint SubOne()</div><div class="ttdef"><b>Definition:</b> <a href="ttmathuint_8h_source.html#l00395">ttmathuint.h:395</a></div></div>
<div class="ttc" id="classttmath_1_1_int_html_af934f141ffee622c5b19edc661d2d76f"><div class="ttname"><a href="classttmath_1_1_int.html#af934f141ffee622c5b19edc661d2d76f">ttmath::Int::ToInt</a></div><div class="ttdeci">sint ToInt() const</div><div class="ttdef"><b>Definition:</b> <a href="ttmathint_8h_source.html#l01132">ttmathint.h:1132</a></div></div>
<div class="ttc" id="structttmath_1_1_conv_html_ad855ed895ef81b4a248b02dd923154e7"><div class="ttname"><a href="structttmath_1_1_conv.html#ad855ed895ef81b4a248b02dd923154e7">ttmath::Conv::round</a></div><div class="ttdeci">sint round</div><div class="ttdef"><b>Definition:</b> <a href="ttmathtypes_8h_source.html#l00461">ttmathtypes.h:461</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>
